NEWS
js mqtt String Objekt setState 'true' oder true
-
Wenn mit true und false geschaltet wird, ändere common.type in 'boolean'. Andernfalls ändere den Vergleich im Script.
-
@paul53
common.type = 'string'. Muss string sein.mit true erhalte ich die Warnung, aber es funktioniert.
mit 'true' erhalte ich keine Warnung, aber es funktioniert NICHT. -
@hanss sagte:
common.type = 'string'. Muss string sein.
Weshalb ? Von common.type = 'boolean' bekommt MQTT nichts mit, sondern nur ioBroker.
-
@paul53
Meine ESP8266 mit dem mqtt PubSubClient erzeugen die topics im ioBroker.
Da ist alles mit typ string.
Ich weiss nicht, wie man bei dem PubSubClient ein topic anlegt, damit beim
ioBroker ein Objekt mit Typ bool erzeugt wird. -
@hanss sagte:
Ich weiss nicht, wie man bei dem PubSubClient ein topic anlegt, damit beim ioBroker ein Objekt mit Typ bool erzeugt wird.
Ich auch nicht.
Was hindert Dich daran, den Typ im Objekt manuell zu ändern ? -
Das wäre ein enormer Aufwand.
Ich möchte deshalb bei den Clients bei type string bleiben, das ist alles
getestet und funktioniert ohne Probleme.
Es gibt da nur den typ string, keine floats, nur ganze Zahlen, bool als "true" und "false" und Strings.Eigentlich ist ja das Problem nicht bei den Clients, sondern js im ioBroker funktioniert da
offensichtlich nicht richtig.
Ich habe bisher immer vermieden, einen Fehler zu umgehen. Das rächt sich immer irgendwann.
Leider kann ich den js im ioBroker nicht selber ändern. -
@hanss sagte:
Eigentlich ist ja das Problem nicht bei den Clients,
Doch, wenn man mit true und false ein- und ausschalten kann, nicht aber mit 'true' und 'false', liegt es nicht an ioBroker.
-
@paul53
Jetzt mal ohne Clients.
Es gibt ein Objekt vom Typ String.Wenn ich setState("mqtt.0.haus.keller.HumiFan.Setpoints.Gartenwasser",'true')
ausführe, bleibt das Objekt unverändert.Wenn ich setState("mqtt.0.haus.keller.HumiFan.Setpoints.Gartenwasser",true)
ausführe, steht im Objekt auch true, ich erhalte aber die Warnung.Deshalb meine ich, da stimmt etwas nicht mit js im ioBroker.
-
@hanss sagte:
Wenn ich setState("mqtt.0.haus.keller.HumiFan.Setpoints.Gartenwasser",'true')
ausführe, bleibt das Objekt unverändert.Wird denn mit
setState("mqtt.0.haus.keller.HumiFan.Setpoints.Gartenwasser",'true')
eingeschaltet und mit
setState("mqtt.0.haus.keller.HumiFan.Setpoints.Gartenwasser",'false')
ausgeschaltet ?
-
Im ioBroker gar nichts.
Die Info 'true' oder 'false' wird nur per mqtt an die Clients übertragen.
Die Clients schalten dann entsprechend. -
@hanss sagte:
Die Info 'true' oder 'false' wird nur per mqtt an die Clients übertragen. Die Clients schalten dann entsprechend.
Dann ändere den Vergleich im Script.
// Schaltet Gartenwasser Timer ein wenn GW aus war, schaltet Gartenwasser aus wenn GW ein war // GW TIMER var update; on({id: "mqtt.0.haus.keller.HumiFan.Setpoints.Gartenwasser", change: "ne"}, function (obj) { if ( obj.state.val == 'true') { update = setTimeout(function () { // Ausschalt Timer setState("mqtt.0.haus.keller.HumiFan.Setpoints.Gartenwasser", 'false'); // Gartenwasser ausschalten },30 * 60 * 1000); // Ausschaltzeit in ms 30 * 60 * 1000 } });
-
Das Problem ist nicht obj.state.val == 'true',
sondern
Wenn ich setState("mqtt.0.haus.keller.HumiFan.Setpoints.Gartenwasser",'true')
ausführe, bleibt das Objekt unverändert.Wenn ich setState("mqtt.0.haus.keller.HumiFan.Setpoints.Gartenwasser",true)
ausführe, steht im Objekt auch true, ich erhalte aber die Warnung. -
-
Wenn das Objekt vorher 'false' war, dann ist es auch nach
setState("mqtt.0.haus.keller.HumiFan.Setpoints.Gartenwasser",'true')
immer noch 'false'Könntest Du das einmal nachbilden, sind ja nur ein paar Zeilen.
Würde mich interessieren, ob das auch bei Dir sich so verhält. -
@hanss sagte:
Könntest Du das einmal nachbilden, sind ja nur ein paar Zeilen.
Nein, ich habe kein MQTT. Wenn ich einen Datenpunkt mit setState() auf 'true' setze, dann wird auch true (rot) angezeigt. Bleibt es bei Dir false (schwarz) ? Dann macht das der Adapter.
-
Die Farbe beim Objekt ändert sich nicht, weil es ein string ist und kein bool.
-
-
Ich habe es gerade ausprobiert:
wenn ich ein Objekt unter javascript.0.test anlege (typ string), dann kann ich es mit 'true' verändern.wenn ich ein Objekt unter mqtt.0.test anlege (typ string), dann kann ich es mit 'true' NICHT verändern.