NEWS
Parser - RegEx -Das ding macht mich fertig
-
Manchmal muss man eine Nacht drüber schlafen.
Heute alles gelöscht und neu eingetragen und nun läuft es!
Das hier ":(\d+) hat funktioniert
Danke Dir für deine Hilfe.
@Webranger sagte in Parser - RegEx -Das ding macht mich fertig:
Das hier ":(\d+) hat funktioniert
Nach den Screenshot vom Editor war das klar!
In dem "Quelltext" waren Steuerzeichen.
Das kann nicht der Originaltext gewesen sein. -
@Webranger sagte in Parser - RegEx -Das ding macht mich fertig:
Das hier ":(\d+) hat funktioniert
Nach den Screenshot vom Editor war das klar!
In dem "Quelltext" waren Steuerzeichen.
Das kann nicht der Originaltext gewesen sein.@Homoran Ich habe auch ein Problem mit RegEx, Wie kann ich aus folgender Webseite mit dem Parser den markierten Wert herausfiltern?

Wie man sehen kann habe ich nur eine Zahl mit 3 Zeichen. Ich brauch jedoch die ganze Zahl z.B. 191.125.786 am besten
ohne die Punkte dazwischen also 191125786.
Hat jemand eine Idee?<html><head><title>ISm</title></head><h2>IPswitch-S0m-WiFi: <hr><pre>S0 = 191.125.863Wh + 52W<FONT SIZE='-2'>, min= 0W, max. 2.743W</FONT><br>Limit Output = 1<br>MQTT connected= 1<FONT SIZE='-2'>, vor= 244s, connected= 3144, reconnected= 3157</FONT><br><hr><br><a href="http://192.168.198.38?ref=5">start refresh</a> <a href="http://192.168.198.38?inf=1">?</a> <a href="http://192.168.198.38?mmr=1">reset min/max</a><br><hr> <img src="/chart.cvg"/></FONT></pre><br> -
@Homoran Ich habe auch ein Problem mit RegEx, Wie kann ich aus folgender Webseite mit dem Parser den markierten Wert herausfiltern?

Wie man sehen kann habe ich nur eine Zahl mit 3 Zeichen. Ich brauch jedoch die ganze Zahl z.B. 191.125.786 am besten
ohne die Punkte dazwischen also 191125786.
Hat jemand eine Idee?<html><head><title>ISm</title></head><h2>IPswitch-S0m-WiFi: <hr><pre>S0 = 191.125.863Wh + 52W<FONT SIZE='-2'>, min= 0W, max. 2.743W</FONT><br>Limit Output = 1<br>MQTT connected= 1<FONT SIZE='-2'>, vor= 244s, connected= 3144, reconnected= 3157</FONT><br><hr><br><a href="http://192.168.198.38?ref=5">start refresh</a> <a href="http://192.168.198.38?inf=1">?</a> <a href="http://192.168.198.38?mmr=1">reset min/max</a><br><hr> <img src="/chart.cvg"/></FONT></pre><br>@werner2000x sagte in Parser - RegEx -Das ding macht mich fertig:
Wie kann ich aus folgender Webseite
welche?
Ist in den Code-Tags der gesamte Quelltext?
Dann würde
([\d\.]+)Whdas Ergebnis bringen, aber das nutzt dir wegen der Punkte nichts.
Die müsstest du dann ggf. mit einem Script entfernen -
@Homoran Ich habe auch ein Problem mit RegEx, Wie kann ich aus folgender Webseite mit dem Parser den markierten Wert herausfiltern?

Wie man sehen kann habe ich nur eine Zahl mit 3 Zeichen. Ich brauch jedoch die ganze Zahl z.B. 191.125.786 am besten
ohne die Punkte dazwischen also 191125786.
Hat jemand eine Idee?<html><head><title>ISm</title></head><h2>IPswitch-S0m-WiFi: <hr><pre>S0 = 191.125.863Wh + 52W<FONT SIZE='-2'>, min= 0W, max. 2.743W</FONT><br>Limit Output = 1<br>MQTT connected= 1<FONT SIZE='-2'>, vor= 244s, connected= 3144, reconnected= 3157</FONT><br><hr><br><a href="http://192.168.198.38?ref=5">start refresh</a> <a href="http://192.168.198.38?inf=1">?</a> <a href="http://192.168.198.38?mmr=1">reset min/max</a><br><hr> <img src="/chart.cvg"/></FONT></pre><br>@werner2000x Jetzt habe ich nach vielen Rumprobieren eine Zwischenlösung über den Datentyp "string" statt "number":

Den RegEx habe ich auf \d.\d.\d*(?=Wh)** geändert. Nun habe ich zwar alle Zeichen im Ergebnis 191.125.863, doch sind da immer noch die Punkte dazwischen. Weiß jemand wie man die wegbekommt? -
@werner2000x Jetzt habe ich nach vielen Rumprobieren eine Zwischenlösung über den Datentyp "string" statt "number":

Den RegEx habe ich auf \d.\d.\d*(?=Wh)** geändert. Nun habe ich zwar alle Zeichen im Ergebnis 191.125.863, doch sind da immer noch die Punkte dazwischen. Weiß jemand wie man die wegbekommt?@werner2000x sagte in Parser - RegEx -Das ding macht mich fertig:
Weiß jemand wie man die wegbekommt?
@Homoran sagte in Parser - RegEx -Das ding macht mich fertig:
Die müsstest du dann ggf. mit einem Script entfernen
Dann musst du einen weiteren Datenpunkt vom Typ number erstellen, den Text splitten, in number umwandeln und dann in den DP schreiben
-
@werner2000x sagte in Parser - RegEx -Das ding macht mich fertig:
Weiß jemand wie man die wegbekommt?
@Homoran sagte in Parser - RegEx -Das ding macht mich fertig:
Die müsstest du dann ggf. mit einem Script entfernen
Dann musst du einen weiteren Datenpunkt vom Typ number erstellen, den Text splitten, in number umwandeln und dann in den DP schreiben
@Homoran Ja danke. Ich habe es jetzt in NodeRed mit einer Funktion zum Entfernen der Punkte gelöst:
var tmp1 = msg.payload.substr(0,4); var tmp2 = msg.payload.substr(5,3); var tmp3 = msg.payload.substr(9,3); msg.payload = tmp1 + tmp2 + tmp3; if (msg.payload > 0) return msg; return msg;Hier das NodeRed:

In "Filter Punkte" steckt die Formel von oben. -
@Homoran Ja danke. Ich habe es jetzt in NodeRed mit einer Funktion zum Entfernen der Punkte gelöst:
var tmp1 = msg.payload.substr(0,4); var tmp2 = msg.payload.substr(5,3); var tmp3 = msg.payload.substr(9,3); msg.payload = tmp1 + tmp2 + tmp3; if (msg.payload > 0) return msg; return msg;Hier das NodeRed:

In "Filter Punkte" steckt die Formel von oben.@werner2000x sagte in Parser - RegEx -Das ding macht mich fertig:
In "Filter Punkte" steckt die Formel von oben.
aber das ist dann immer noch ein String
-
@werner2000x sagte in Parser - RegEx -Das ding macht mich fertig:
In "Filter Punkte" steckt die Formel von oben.
aber das ist dann immer noch ein String
@Homoran Ja das ist ein String. Den kann ich jedoch auch in ein Flot- oder Grafana-Diagramm darstellen.
Dazu brauche ich nicht unbedingt integer. Ich habe es trotzdem in einem anderen NodeRed Flow/Funktion zu Testzwecken umgewandelt:msg.payload = parseInt(msg.payload); return msg; -
@Homoran Ja das ist ein String. Den kann ich jedoch auch in ein Flot- oder Grafana-Diagramm darstellen.
Dazu brauche ich nicht unbedingt integer. Ich habe es trotzdem in einem anderen NodeRed Flow/Funktion zu Testzwecken umgewandelt:msg.payload = parseInt(msg.payload); return msg;@werner2000x Dann bleibt nur noch zu hoffen, dass die Zahl immer 3x3stellig bleibt
-
@Homoran Ja danke. Ich habe es jetzt in NodeRed mit einer Funktion zum Entfernen der Punkte gelöst:
var tmp1 = msg.payload.substr(0,4); var tmp2 = msg.payload.substr(5,3); var tmp3 = msg.payload.substr(9,3); msg.payload = tmp1 + tmp2 + tmp3; if (msg.payload > 0) return msg; return msg;Hier das NodeRed:

In "Filter Punkte" steckt die Formel von oben.@werner2000x sagte in Parser - RegEx -Das ding macht mich fertig:
In "Filter Punkte" steckt die Formel von oben.
Sollte da nicht
msg.paylod = msg.payload.replace(/\./g,'')reichen? Kenne node-red nicht, daher ungetestet -
@werner2000x sagte in Parser - RegEx -Das ding macht mich fertig:
In "Filter Punkte" steckt die Formel von oben.
Sollte da nicht
msg.paylod = msg.payload.replace(/\./g,'')reichen? Kenne node-red nicht, daher ungetestet@fastfoot said in Parser - RegEx -Das ding macht mich fertig:
msg.paylod = msg.payload.replace(/./g,'')
Die Formel habe ich mal zum Test in NodeRed gebracht. Leider werden die Punkte damit nicht gefiltert.
Es bleibt der Wert mit Punkte unverändert. Ich hätte auch gern eine Formel dafür, weil das manuelle Filtern über die Position umständlicher ist.
msg.paylod = msg.payload.replace(/./g,'')
return msg; -
@fastfoot said in Parser - RegEx -Das ding macht mich fertig:
msg.paylod = msg.payload.replace(/./g,'')
Die Formel habe ich mal zum Test in NodeRed gebracht. Leider werden die Punkte damit nicht gefiltert.
Es bleibt der Wert mit Punkte unverändert. Ich hätte auch gern eine Formel dafür, weil das manuelle Filtern über die Position umständlicher ist.
msg.paylod = msg.payload.replace(/./g,'')
return msg;@werner2000x sagte in Parser - RegEx -Das ding macht mich fertig:
msg.paylod = msg.payload.replace(/./g,'')
return msg;schau mal genau, wie meine Formel aussieht...
-
@werner2000x Dann bleibt nur noch zu hoffen, dass die Zahl immer 3x3stellig bleibt
@Homoran Ja das stimmt. Wenn ich im Jahr 4 kWh verbrauche dauert es noch ca. 20 Jahre bis die 99 TkWh erreicht sind.
Aber trotzdem - eine Formel ohne absolute Filterung wäre besser. :-) -
@werner2000x sagte in Parser - RegEx -Das ding macht mich fertig:
msg.paylod = msg.payload.replace(/./g,'')
return msg;schau mal genau, wie meine Formel aussieht...
@fastfoot Hier nochmal die Formel im Screenshot:

Ich sehe keinen Unterschied zu deiner Formel.
Kann man die Formel auch im Parser hinter dem RegEx .\d*.\d*.\d*(?=Wh) positionieren ? -
@fastfoot Hier nochmal die Formel im Screenshot:

Ich sehe keinen Unterschied zu deiner Formel.
Kann man die Formel auch im Parser hinter dem RegEx .\d*.\d*.\d*(?=Wh) positionieren ?@werner2000x sagte in Parser - RegEx -Das ding macht mich fertig:
@fastfoot Hier nochmal die Formel im Screenshot:

Ich sehe keinen Unterschied zu deiner Formel.
Kann man die Formel auch im Parser hinter dem RegEx .\d*.\d*.\d*(?=Wh) positionieren ?In deinem Posting war der Backslash vor dem Punkt nicht zu sehen. der Parser dürfte wohl nur RegEx Ausdrücke akzeptieren, kein JS.
Wie ist denn das Ergebnis wenn du die Formel in node-red nutzt?
-
@fastfoot Hier nochmal die Formel im Screenshot:

Ich sehe keinen Unterschied zu deiner Formel.
Kann man die Formel auch im Parser hinter dem RegEx .\d*.\d*.\d*(?=Wh) positionieren ?@werner2000x evtl könnte auch
(msg.payload).replace(/\./g,''))helfen -
@werner2000x sagte in Parser - RegEx -Das ding macht mich fertig:
@fastfoot Hier nochmal die Formel im Screenshot:

Ich sehe keinen Unterschied zu deiner Formel.
Kann man die Formel auch im Parser hinter dem RegEx .\d*.\d*.\d*(?=Wh) positionieren ?In deinem Posting war der Backslash vor dem Punkt nicht zu sehen. der Parser dürfte wohl nur RegEx Ausdrücke akzeptieren, kein JS.
Wie ist denn das Ergebnis wenn du die Formel in node-red nutzt?
@fastfoot Ja, das habe ich doch oben schon geschrieben. Es werden keine Punkte gefiltert. Der Wert sieht nach der Formel genauso aus wie vorher - also mit Punkten.
-
@werner2000x sagte in Parser - RegEx -Das ding macht mich fertig:
@fastfoot Hier nochmal die Formel im Screenshot:

Ich sehe keinen Unterschied zu deiner Formel.
Kann man die Formel auch im Parser hinter dem RegEx .\d*.\d*.\d*(?=Wh) positionieren ?In deinem Posting war der Backslash vor dem Punkt nicht zu sehen. der Parser dürfte wohl nur RegEx Ausdrücke akzeptieren, kein JS.
Wie ist denn das Ergebnis wenn du die Formel in node-red nutzt?
@fastfoot sagte in Parser - RegEx -Das ding macht mich fertig:
der Parser dürfte wohl nur RegEx Ausdrücke akzeptieren, kein JS.
Es geht hier jetzt nicht mehr um den Parser-Adapter, sondern um node-red
Der Parser Teil ist bereits abgeschlossen und als String in einen Datenpunkt geschrieben.
Dieser Datenpunkt wird jetzt ausgelesen(zumindest sollte es so sein)
-
@fastfoot sagte in Parser - RegEx -Das ding macht mich fertig:
der Parser dürfte wohl nur RegEx Ausdrücke akzeptieren, kein JS.
Es geht hier jetzt nicht mehr um den Parser-Adapter, sondern um node-red
Der Parser Teil ist bereits abgeschlossen und als String in einen Datenpunkt geschrieben.
Dieser Datenpunkt wird jetzt ausgelesen(zumindest sollte es so sein)
@Homoran sagte in Parser - RegEx -Das ding macht mich fertig:
@fastfoot sagte in Parser - RegEx -Das ding macht mich fertig:
der Parser dürfte wohl nur RegEx Ausdrücke akzeptieren, kein JS.
Es geht hier jetzt nicht mehr um den Parser-Adapter, sondern um node-red
das war die Antwort auf
Kann man die Formel auch im Parser hinter dem RegEx .\d*.\d*.\d*(?=Wh) positionieren ?
-
@Homoran sagte in Parser - RegEx -Das ding macht mich fertig:
@fastfoot sagte in Parser - RegEx -Das ding macht mich fertig:
der Parser dürfte wohl nur RegEx Ausdrücke akzeptieren, kein JS.
Es geht hier jetzt nicht mehr um den Parser-Adapter, sondern um node-red
das war die Antwort auf
Kann man die Formel auch im Parser hinter dem RegEx .\d*.\d*.\d*(?=Wh) positionieren ?
@fastfoot sagte in Parser - RegEx -Das ding macht mich fertig:
das war die Antwort auf
:das habe ich übersehn

Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden