NEWS
RegEx Frage
-
Hallo als Neuling mit ioBroker, Parser und RegEx
bekomme ich es nicht hin von der Seite https://price.bisq.wiz.biz/getAllMarketPrices mir nur den Preis in Euro (gerundet) anzeigen zu lassen:}, {
"currencyCode" : "EUR",
"price" : 24120.109399999998,
"timestampSec" : 1693047959042,
"provider" : "Bisq-Aggregate"
}, {Ich habe diverse Dinge mit der Seite https://regex101.com erfolglos probiert.
Ich hoffe auch hier auf Hilfe aus dem Forum.
-
@hippocampus-0 So was parséd man nicht mit RegEx. Das ist ein JSON und da kannst Du direkt mit Deiner Logikmaschine zugreifen und dann ggf. runden. Mit regulären Ausdrücken rechnet man auch nicht (runden), sondern dass ist reine Stringverarbeitung.
-
@mickym das ist von der Seite direkt. Was meinst du mit Logikmaschine?
-
@hippocampus-0 Na was nutzt Du NodeRed, Blockly, Javascript? Und dann wäre es gut, wenn Du die gesamte Ausgabe hier in CodeTags einstellst. Sensible Informationen kannst Du ja aus - xxx
-
@mickym Den Adapter Parser.O im ioBroker wollte ich nutzen
-
@mickym Na wie gesagt das ist schon ein JSON und sowas parsed man nicht. Sondern Du rufst die Seite direkt aus Deiner Logikmaschine auf und greifst auf die Inhalte zu. Du kannst auch die ganze Seite mit dem Parser in einen Datenpunkt schreiben und dann mit der Logikmaschine auslesen. Wie gesagt mit RegEx kannst Du das Parsen - aber es wird nie runden.
"price" : \d+\.\d{3}
damit schneidest Du nur ab, wirst aber nie runden. Du kannst auch 3 Stellen nehmen, die in einen Datenpunkt mit dem Parser schreiben und dann mit Deiner Logikmaschine runden. Ist halt alles von hinten durch die Brust. Anders ist es halt wesentlich eleganter.
-
@mickym Hallo Dank für deine Hilfestellung. Was würde ich denn bei Block für Module zum Filtern benutzen?
-
OK ich seh - schon - ich mach Dir das Blockly. Ich geh mal davon aus, dass Du das EUR Teil willst.
-
@mickym Voll nett. Danke. Ja, nur der Euro Preis
-
@hippocampus-0 sagte: Was würde ich denn bei Block für Module zum Filtern benutzen?
-
@paul53 Vielen Dank. Ich teste es gleich aus.
@mickym @paul53
Eine offene Frage habe ich noch unter https://forum.iobroker.net/topic/67842/parser-regex-von-einer-seite-mit-nur-einer-zahl/10?_=1693050873544Dabei handelt es sich um eine Seite mit nur einer Zahl, welche ich mit dem Parser und RegEx auslesen möchte. Dabei wurde die RegEx Einstellung mit \d+ vorgeschlagen. Anscheinen sind die Parser Einstellungen (Num, Rolle, Typ, Alt, Intervall …) falsch bei mir - es wird mir statt einer Sechstelligen Zahl die sich ändert konstant eine 32 angezeigt
-
@hippocampus-0 sagte: Seite mit nur einer Zahl, welche ich mit dem Parser und RegEx auslesen möchte.
Weshalb nicht mit Blockly / request?
-
@hippocampus-0 sagte in RegEx Frage:
@mickym Voll nett. Danke. Ja, nur der Euro Preis
Hier meine Lösung:
-
kann ich nicht nachvollziehen - aber wie @paul schreibt entweder auch mit blockly. Mit dem 32 ist dann ein Bug im Adapter.
-
@paul53
Bei mir gibt es einen Fehler
-
-
@hippocampus-0 Ja wie gesagt - nimm lieber blockly. Das ist nicht Dein Fehler, sondern ein Fehler des Adapters.
-
@hippocampus-0 sagte: Bei mir gibt es einen Fehler
Du musst im Block "aktualisiere" einen existierenden Datenpunkt vom Typ "Zahl" zuweisen.
-
@mickym $formatNumber($.data[currencyCode="EUR"].price...) ?
-
@hippocampus-0 Na importiere halt das Ganze Blockly.
Der Code heißt:
$formatNumber($.data[currencyCode="EUR"].price,"0.00")
Das ergibt einen String und keine Zahl - da Du dann auch 2 Nachkommastellen hast, wenn gerundet. Man kann das auch noch so abändern, dass Du ein Komma statt Punkt hast.