NEWS
[gelöst] Shelly über VIS schalten
-
Ich hänge gerade an dem gleichen Problem mit einem Shelly und habe versuch diesem Thema zu folgen.
Ich habe noch nie mit einem Alias gearbeitet und finde auch die Bilder:
@reiti sagte in [gelöst] Shelly über VIS schalten:
nicht.
Wäre nett wenn mir das mal einer erklären kann.
Danke und VG
PS:
Ich bin ein bisschen weiter gekommen. Ich habe einen Datenpunkt unter alias.0 angelegt und mit dem Stift dann unter Alias folgendes eingegeben:
Wenn ich nichts falsch gesehen habe, sollte es jetzt genauso aussehen wie von reiti angegeben.
Wenn ich nun in der VIS den Schalter betätige steht entweder eine 1 statt on oder eine 0 statt off im Datenpunkt "mqtt.0.shellies.shelly1-349454734A8E.relay.0".
Als Widget benutze ich bulb on/off.
Es ist dabei egal ob ich als Datenpunkt des Shelly "mqtt.0.shellies.shelly1-349454734A8E.relay.0" oder den Alias Datenpunkt im Widget angegeben habe. -
@woupi sagte: Datenpunkt unter alias.0 angelegt
Mit Typ "Logikwert"("boolean") und Rolle "switch"?
-
@paul53
Ich habe irgendwo im Netzt eine Anleitung gefunden, in der geschrieben stand, dass ein Datenpunkt unter Alias.0 angelegt werden sollt. Mehr stand da leider nicht und mehr habe ich leider nicht gefunden.
Also habe ich mich an das Bild gehalten Role: State und type: String.{ "common": { "name": "AliasShelly1BadHK2", "desc": "Manuell erzeugt", "role": "state", "type": "string", "read": true, "write": true, "def": "", "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": 1707120906572 }
-
@woupi sagte: Role: State und type: String.
Ändere es in "type": "boolean" und "role": "switch".
-
Vielen Dank erstmal noch für deine Hilfe
Ich habe es geändert:
{ "common": { "name": "AliasShelly1BadHK2", "desc": "Manuell erzeugt", "role": "switch", "type": "boolean", "read": true, "write": true, "def": "", "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": 1707128700138 }
Hat aber leider keine Auswirkung.
Der Datenpunkt{ "_id": "mqtt.0.shellies.shelly1-349454734A8E.relay.0", "common": { "name": "shellies/shelly1-349454734A8E/relay/0", "write": true, "read": true, "role": "variable", "desc": "mqtt server variable", "type": "string" }, "native": { "topic": "shellies/shelly1-349454734A8E/relay/0" }, "type": "state", "from": "system.adapter.mqtt.0", "user": "system.user.admin", "ts": 1682257439875, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
bekommt beim einschalten eine 1 und beim ausschalten eine 0 und nicht on bzw off.
Wenn ich den Shelly selbst betätige ändert sich dieser Datenpunkt auf on bzw off.
Ich habe es auch wieder mit beiden Datenpunkten im widget versucht. Das Ergebnis bleibt 1 bzw 0. Hier mal noch das widget:
-
@woupi sagte: Ich habe es geändert:
Ändere noch "def": false, damit der js-controller nicht meckert.
@woupi sagte in [gelöst] Shelly über VIS schalten:
Hat aber leider keine Auswirkung.
Geschrieben wird auf "mqtt.0.shellies.shelly1-349454734A8E.relay.0.command".
@woupi sagte in [gelöst] Shelly über VIS schalten:
bekommt beim einschalten eine 1 und beim ausschalten eine 0 und nicht on bzw off.
Wenn ich den Shelly selbst betätige ändert sich dieser Datenpunkt auf on bzw off.Der Status-Datenpunkt liefert unterschiedliche Werte?
-
def habe ich noch geändert.
Der Status-Datenpunkt liefert unterschiedliche Werte?
So sehen die beiden Datenpunkte jetzt aus:
Und so wenn ich eingeschaltet habe:
Und so wenn ich ausgeschaltet habe:
-
@woupi
Wie kommt false in "mqtt.0.shellies.shelly1-349454734A8E.relay.0.command"? Ist der DP vom Typ "string"? -
@paul53
Ja.
Der wurde von shelly so angelegt.
Ich habe noch einen 2. Shelly 1 und habe da mal nachgesehen. Da ist der Datenpunkt mqtt.0.shellies.shelly1pm-34945472C493.relay.0.command ebenfalls vom "type": "string" -
@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); });