NEWS
(gelöst) String konvertieren in boolean
-
Hallo zusammen
Ich bin neu mit iobroker unterwegs und habe eigentlich keine Erfahrung mit Blockly und Javascript, desshalb eine vieleicht etwas merkwürdige Frage an die Gemeinschaft:
Aus meiner Heizungsanlage (TA UVR16x2) bekomme ich via JSON ein Datenpunkt mit dem Inhalt "0 Aus/Ein" oder "1 Ein/Aus". Daraus möchte ich eigentlich ein Alias machen der mit "false/true" gefüllt ist.
Mein Lösungsansatz ist eigentlich folgender:
Aus dem String das 1.Zeichen nehmen und danach in ein boolean konvertieren und in den Alias schreiben.Trotz Suche habe ich bis jetzt kein für mich verständliches Beispiel gefunden, dass ich umsetzten könnte. Vieleicht kann mir da jemand etwas helfen? Konkret fehlt mir eigentlich quasi eine Möglichkeit den String ab dem 2.Zeichen zu löschen.
Gruss Andi
-
@andibr Das JSON im </> Code-Tag. Javascript oder Bockly?
-
@mcu
Hallo mcu
Ich verstehe beides nicht so genau.Verstehe ich das richtig, dass du das JSON haben möchtest?
-
@andibr Ja und den DP in der Objektstruktur. Damit kann man dir dann ein fertiges Script schicken und du brauchst es nur noch importieren.
-
@andibr sagte: Inhalt "0 Aus/Ein" oder "1 Ein/Aus". Daraus möchte ich eigentlich ein Alias machen der mit "false/true" gefüllt ist.
common.alias.read:
!!parseInt(val)
Blockly:
-
Habe dir im Chat das JSON gesendet. Für die Datenpunkte im Alias habe ich erst ma erfasst aber noch nichts definiert.
-
@paul53
Hallo Paul, vielen Dank
Aber mit dem ersteren bin ich schlicht überfordert, mit dem Blockly kann ich schon was mehr anfangen, ob ich da was zusammen kriege probiere ich gleich mal. -
@andibr Editor-Fehler
-
Ich hoffe das passt so?
-
@andibr Welcher Wert soll jetzt in den ALIAS: alias.0.Heizung.Anford_Kessel.ACTUAL
Input_Number10 oder Output_Number02,*** -
Also eigentlich sind es am Schluss alle 4 Status Meldungen für die ich im alias.0 auch bereits 4 DP angelegt habe. Mit diesen möchte ich am Schluss auch auf der Vi nachher die Wigets steuern und natürlich die via die "Anforderung" auch die Verbrauchsmenge mit dem h-Zähler machen.
-
@andibr Ja welcher Wert von den Input-Werten oder Output-Werten ist denn jetzt den einzelnen Alias-Werten zuzuordnen?
Sollen die Alias-Werte die Input oder Output-Werte steuern oder nur anzeigen? -
@mcu
Also eigentlich möchte ich in den Alias einfach die Status angezeigt haben, da ich die Heizung sowieso nur visualisieren und protokollieren kann auf diesem weg, bruache ich keine Eingriffe -
@andibr Ok, dann nur die Zuordnung der einzelne Datenpunkte.
Also so: javascript.0.UVR16x2.Input_Number10 -> alias.0.Heizung.Anford_Kessel.ACTUAL -
@mcu ja so denke ich mir das, dann kann man wenn ich dann wirklich mal Lust hätte (vor allem auch das Wissen) auch die Datenpunkte auch über die CAN Schnittstelle holen. Aber ich denke das wird eher nicht geschehen, den was soll es mir bringen wenn es dann läuft
und zwar sind die auf der Heizung folgendermassen beschriftet:
....Input_Nummer10 == Pelletmagel
....Output_Nummer02 == Kesselpumpe
....Output_Nummer05 == Anforderung
....Output_Nummer07 == Heizkreispumpe -
@andibr sagte: in den Alias einfach die Status angezeigt haben
Dann kann der Alias mit Wandlung nach "boolean" so aussehen:
{ "_id": "alias.0.Heizung.Anford_Kessel.ACTUAL", "type": "state", "common": { "name": "Anforderung Kessel", "role": "indicator", "type": "boolean", "read": true, "write": false, "alias": { "id": "javascript.0.UVR16x2.Output_Number05", "read": "!!parseInt(val)" } }, "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1625924529491, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
-
@andibr Dann geh mal ist das Alias-Objekt z.b vom Pelletmagel und ändere die Daten im Expertenmodus so wie es von @paul53 beschrieben wurde.
Versuch es mal.Dieser Teil muss nicht angepasst werden!!! "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1625924529491, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }
Musst evtl nur den Part ergänzen und die Werte mit Input/Output richtig eingeben:
, "alias": { "id": "javascript.0.UVR16x2.Output_Number05", "read": "!!parseInt(val)" }
-
@mcu vieleicht stelle ich mich jetzt etwas naiv an, aber wo genau muss es korrigiert werden?
{ "_id": "alias.0.Heizung.Anford_Kessel.ACTUAL", "common": { "name": "ACTUAL", "role": "indicator", "type": "boolean", "read": true, "write": true, "alias": { "id": "" }, "custom": { "statistics.0": { "enabled": true, "logName": "ACTUAL", "count": false, "sumCount": false, "timeCount": true, "fiveMin": false, "groupFactor": "", "impUnit": "", "impUnitPerImpulse": "", "sumIgnoreMinus": true, "sumDelta": false, "avg": false, "minmax": false, "sumGroup": "" } } }, "native": {}, "type": "state", "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1625910299738, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 } }
Das steht aktuell unter RAW drin
-
@andibr sagte: aber wo genau muss es korrigiert werden?
Zeile 10:
"id": "javascript.0.UVR16x2.Output_Number05", "read": "!!parseInt(val)"
"write" (Zeile 8 ) in false ändern und sinnvollen Namen vergeben (Zeile 4).
-
@paul53
Du hast Recht das "Actual" ist kaum Sinnvoll, das hat es automatisch gegeben beim Anlegen über den Alias. Nun steht sogar schon mal "true" drin und die Heizung läuft auch gerade.