Hey Danke für den Tipp.
Hat geklappt
//array = input var[]
array.forEach(function(element) {
if(RegExp(/(\d+\.){3}(\d)/).test(element)) {
output = element.match(/(\d+\.){3}(\d)/)[0];
}
});
return output;
Hey Danke für den Tipp.
Hat geklappt
//array = input var[]
array.forEach(function(element) {
if(RegExp(/(\d+\.){3}(\d)/).test(element)) {
output = element.match(/(\d+\.){3}(\d)/)[0];
}
});
return output;
@oliverio Ich hab es am Ende ja auch bei mir berücksichtigt. Wäre dennoch eleganter aus meiner Sicht im MQTT Adapter zu sagen, verwerfe solche Nachrichten oder bearbeite solche Nachrichten aber dann ohne Fehlermeldung oder oder gibt ja mehre Möglichkeiten wie man mit sowas umgehen könnte.
Natürlich wäre es besser das der Absender es richtig macht, aber wo ist das halt garantiert
@codierknecht Danke bin ich auch der Meinung.
Ich hatte das gleiche Problem und dazu im Git für den mqtt Adapter mal angefragt ob man das nicht filtern könnte, weil es mir auch das Log voll gemacht hat. Hatte dafür extra vom Sonoff zum mqtt gewechselt.
https://github.com/ioBroker/ioBroker.mqtt/issues/353
Lösung war: Stell sicher das der Client die richtigen Daten schickt
Da ich die Daten im JS Adapter weiterverarbeite, hab ich mich dazu entschieden den String danach abzuschneiden und lesbar wiederherzustellen. Seit dem hab ich nur noch den Fehler im MQTT...
if (typeof strStateValue === 'string') {
// Findet die Position des ersten nicht druckbaren Zeichens
const indexOfNonPrintable = strStateValue.search(/[^\x20-\x7E]/);
// Findet das letzte Komma vor dem nicht druckbaren Zeichen, falls vorhanden
const lastCommaIndex = indexOfNonPrintable >= 0 ? strStateValue.lastIndexOf(',', indexOfNonPrintable) : -1;
// Entfernt den Teil des Strings nach dem nicht druckbaren Zeichen und stellt den JSON-String wieder her
if (lastCommaIndex >= 0) {
strStateValue = strStateValue.substring(0, lastCommaIndex) + '}';
}
Geht bestimmt eleganter, war für ich aber die einfachste Lösung am Ende. Vlt hilft dir das ja.
Beste Grüße
Hey Danke für den Tipp.
Hat geklappt
//array = input var[]
array.forEach(function(element) {
if(RegExp(/(\d+\.){3}(\d)/).test(element)) {
output = element.match(/(\d+\.){3}(\d)/)[0];
}
});
return output;
Hallo Zusammen,
gibt es die Möglichkeit über die grafische Blockly Seite regEx zu benutzen?
Ich suche in einer List ein Teilstring z.B. 1.2.3.10, aber irgendwie habe ich nichts passendes gefunden.
Vielen Dank für eure Hilfe
Hallo Du kannst an dein Sonoff auch noch ein Relais über die GPIOs schalten. Flash tasmota drauf…
https://www.youtube.com/watch?v=OYe20HS157E
3:20min… Brauchst du nicht groß was kaufen, programmieren, löten etc...
MfG