NEWS
[gelöst] Shelly über VIS schalten
-
@woupi sagte: ebenfalls vom "type": "string"
Dann wundert es mich erst recht, wie false in den DP gelangen kann. Die Schreibkonvertierung ändert doch den Alias-Wert in "off" / "on".
Ändere mal die Schreibkonvertierung mit Hochkommata:"write": "val ? 'on' : 'off'"
Bei mir funktioniert diese Konvertierung:
{ "common": { "name": "Ventilator ein", "desc": "Manuell erzeugt", "role": "switch", "type": "boolean", "read": true, "write": true, "def": false, "alias": { "id": { "read": "mqtt.0.shellies.Ventilator.relay.0", "write": "mqtt.0.shellies.Ventilator.relay.0.command" }, "write": "val ? 'on' : 'off'" } }, "type": "state", "native": {}, "_id": "alias.0.Ventilator.ein",
Ich habe aber keine Shellys.
-
@paul53 sagte in [gelöst] Shelly über VIS schalten:
"write": "val ? 'on' : 'off'"
Ich habe mir nochmal die Datenpunkte angesehen und was mit denen passiert, wenn ich den Shelly selber schalte.
Der Datenpunkt "mqtt.0.shellies.shelly1-349454734A8E.relay.0.command" ädert sich überhaupt nicht.
Der Datenpunkt "mqtt.0.shellies.shelly1-349454734A8E.relay.0" ändert sich von on zu off und umgekehrt.Daraus würde ich eigentlich schließen und so hatte ich es mir auch vorher gedacht, dass die widget Objekt ID auf den Datenpunkt "mqtt.0.shellies.shelly1-349454734A8E.relay.0" eingestellt werden muss..
Einen Alias bräuchte ich so eigentlich nicht, oder?
Da das so allerdings nicht funktioniert und auch noch nicht funktioniert hat habe ich angefangen zu suchen und bin auf dieses Thema gestoßen.
Das erstmal zu dem Hintergrund.
Jetzt habe ich alles nochmal auf null zurück gedreht.
So wie bei dem anderen Shell steht jetzt im Datenpunkt "mqtt.0.shellies.shelly1-349454734A8E.relay.0" on oder off.
Und im Datenpunkt "mqtt.0.shellies.shelly1-349454734A8E.relay.0.command" steht (null.)
Schalte ich über den Shelly ändert sich nur "mqtt.0.shellies.shelly1-349454734A8E.relay.0" auf on bzw off.Im Widget habe ich als Objekt ID "mqtt.0.shellies.shelly1-349454734A8E.relay.0" ausgewählt.
Schalte ich über das Widget wird kurz 1 oder 0 angezeigt. Kurz drauf steht einfach wieder der alte Wert, also entweder on oder off, drin.Muss ich jetzt über einen Alias den Wert umwandeln. Also von 1 zu on und von 0 zu off, oder müsste das im widget automatisch gehen, oder muss ich das irgend wo einstellen.
Sorry, wahrscheinlich mache ich einfach irgend etwas falsch, ich weiß nur nicht was.
-
@woupi sagte: im Datenpunkt "mqtt.0.shellies.shelly1-349454734A8E.relay.0.command" steht (null.)
Wenn im Admin on bzw. off (unbestätigt) eingegeben wird, schaltet dann der Shelly und antwortet im Status-DP mit on bzw. off (bestätigt)?
Wenn ja, dann verwende für Vis und Skripte ausschließlich den Alias vom Typ "boolean". -
@paul53
Jetzt wird es für mich noch schwieriger zu verstehen:
Ändern des Datenpunkt "mqtt.0.shellies.shelly1-349454734A8E.relay.0" von off zu on oder on zu off, sorgt nicht dafür das der shelly ein oder aus geschaltet wird.Wenn ich das gleiche aber im Datenpunkt "mqtt.0.shellies.shelly1-349454734A8E.relay.0.command" mache, schaltet der Shelly.
Also muss der Alias erstellt werden.
Aber wie, wo lese ich und welcher Typ, auch boolean, welche role, auch switch?
Schreiben ist klar, muss ich auf "mqtt.0.shellies.shelly1-349454734A8E.relay.0.command" mit "write": "val ? 'on' : 'off'", oder? -
@woupi sagte: Ändern des Datenpunkt "mqtt.0.shellies.shelly1-349454734A8E.relay.0" von off zu on oder on zu off, sorgt nicht dafür das der shelly ein oder aus geschaltet wird.
Das ist ja auch die Rückmeldung des Shelly.
@woupi sagte in [gelöst] Shelly über VIS schalten:
Wenn ich das gleiche aber im Datenpunkt "mqtt.0.shellies.shelly1-349454734A8E.relay.0.command" mache, schaltet der Shelly.
Dann ist der Alias so richtig, wie hier gezeigt.
{ "common": { "name": "AliasShelly1BadHK2", "desc": "Manuell erzeugt", "role": "switch", "type": "boolean", "read": true, "write": true, "def": false, "alias": { "id": { "read": "mqtt.0.shellies.shelly1-349454734A8E.relay.0", "write": "mqtt.0.shellies.shelly1-349454734A8E.relay.0.command" }, "write": "val ? 'on' : 'off'" } }, "type": "state",
In Vis nur den Alias verwenden!
-
Widget zeigt auf den Alias:
Alias erstellt:
{ "common": { "name": "AliasShelly1BadHK2", "desc": "Manuell erzeugt", "role": "switch", "type": "boolean", "read": true, "write": true, "def": false, "alias": { "id": { "read": "mqtt.0.shellies.shelly1-349454734A8E.relay.0", "write": "mqtt.0.shellies.shelly1-349454734A8E.relay.0.command" }, "write": "val ? 'on' : 'off'" } }, "type": "state", "native": {}, "_id": "alias.0.AliasShelly1BadHK2", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1707141785818 }
Leider kein Unterschied:
Im Datenpunkt "mqtt.0.shellies.shelly1-349454734A8E.relay.0" wird 1 oder 0 geschrieben und nicht on oder off.Im Datenpunkt "mqtt.0.shellies.shelly1-349454734A8E.relay.0.command" passiert nichts.
-
@woupi sagte: Im Datenpunkt "mqtt.0.shellies.shelly1-349454734A8E.relay.0.command" passiert nichts.
Verstehe ich nicht. Trage mal im Widget bei "Min" false und bei "Max" true ein.
-
Verstehe ich nicht.
Ich leider schon lange nicht mehr.
Trage mal im Widget bei "Min" false und bei "Max" true ein.
Habe ich gemacht:
Leider das gleiche Ergebnis:
-
@woupi sagte: Leider das gleiche Ergebnis:
Es muss ein Skript geben, das die 1 unbestätigt in den Datenpunkt schreibt?
Ich habe es mit dem Widget (ohne Min, Max) und einer Emulationconst idCommand = 'mqtt.0.shellies.Ventilator.relay.0.command'; const idStatus = 'mqtt.0.shellies.Ventilator.relay.0'; on(idCommand, function(dp) { setTimeout(function() { setState(idStatus, dp.state.val, true); }, 50) });
des Shelly getestet: Es funktioniert wie es soll.
-
Ich habe tatsächlich ein Skript, aber:
Das schreibt zu festen Zeiten Mittwoch und Samstag Morgens um 5:15 ON und Abends um 20 Uhr off.
Das kann das nicht sein, oder?
Ein anderes Skript gibt es nicht.
-
@woupi sagte: Ein anderes Skript gibt es nicht.
Irgendwo muss die unbestätigte 1 im Status-DP herkommen.
Logge mal alle Aktionen auf dem DP:on({id: 'mqtt.0.shellies.shelly1-349454734A8E.relay.0'}, function(dp) { log('Shelly1BadHK2: ' + dp.state.val + ', Quelle: ' + dp.state.from); });
-
@paul53
Danke, werde ich machen. Sitze gerade im Auto auf dem weg nach Hause, wird leider etwas dauern. Melde mich dann direkt wieder. Vielen Dank nochmal für deine Ausdauer.
Vg -
@paul53
Ich gehe davon aus, dass ich den code als neues JS Skript ausführen soll, richtig?Ich frage des halb, weil da ein Fehler kommt.
javascript.0 (1041) script.js.Testskripte.LogShelly1Dp compile failed: at script.js.Testskripte.LogShelly1Dp:6
-
@woupi sagte: code als neues JS Skript ausführen soll, richtig?
Richtig.
@woupi sagte in [gelöst] Shelly über VIS schalten:
Fehler kommt.
Bitte Skript zeigen (in Code tags). Es hat doch nur 3 Zeilen. Sind im Tab "Protokolle" weitere Informationen zum Fehler enthalten?
-
@paul53
habs gefunden, beim kopieren das ";" nicht mit kopiert, sorry.Man sollte sowas nicht mit dem Handy versuchen.
-
@woupi sagte: beim kopieren das ";" nicht mit kopiert
Das sollte nicht zu einem Fehler führen. Allerdings eine fehlende Klammer.
-
@paul53
Ich habe jetzt 3 mal geschaltet:javascript.0 2024-02-05 19:09:35.631 info script.js.Testskripte.LogShelly1Dp: Shelly1BadHK2: off, Quelle: system.adapter.mqtt.0 javascript.0 2024-02-05 19:09:05.628 info script.js.Testskripte.LogShelly1Dp: Shelly1BadHK2: off, Quelle: system.adapter.mqtt.0 javascript.0 2024-02-05 19:08:35.628 info script.js.Testskripte.LogShelly1Dp: Shelly1BadHK2: off, Quelle: system.adapter.mqtt.0
-
-
@paul53
Ich auch nicht.
Die logs werden allerdings auch ohne das etwas geschaltet wird geschrieben. Immer die gleichen. -
@woupi sagte: Die logs werden allerdings auch ohne das etwas geschaltet wird geschrieben. Immer die gleichen.
Offenbar wird zyklisch (alle 30 s) abgefragt.
Dann ändere mal den Trigger auf Wertänderung.on('mqtt.0.shellies.shelly1-349454734A8E.relay.0', function(dp) { log('Shelly1BadHK2: ' + dp.state.val + ', Quelle: ' + dp.state.from); });