NEWS
[gelöst] MQTT Befehl publishen per Button in Jarvis
-
Ich steuere mein Garagentor über einen Shelly 1 über MQTT. Wenn ich den String "on" an das Topic shellies/eg_garage_tor/relay/0/command sende, wird das Garagentor getoggelt.
Nun würde ich das Ganze gerne als einen Button in Jarvis abbilden. Was wäre hier eine gute Strategie? Was wird alles benötigt?
Vielleicht kann mich jemand in die richtige Richtung leiten?
-
@kraxelhuber Bei "on" wird der shelly eingeschaltet. Bei "toggle" wird getoggelt.
-
@mickym Was genau möchtest du mir jetzt sagen?
Wenn ich "on" sende wird praktisch ein Taster betätigt und das Garagentor öffnet oder schließt sich. -
@kraxelhuber Gut ich will mich nicht weiter einmischen:
https://shelly-api-docs.shelly.cloud/gen1/#shelly1-1pm-mqtt
Die offizielle Doku sagt, dass man mit on einschaltet, mit off ausschaltet und toggle toggelt.
Aber das scheint ja nicht dein Problem zu sein.
-
@mickym said in MQTT Befehl publishen per Button in Jarvis:
Aber das scheint ja nicht dein Problem zu sein.
Genau, die eigentliche Funktion (Garagentor öffnen und schließen) läuft wie erwartet.
Ich suche nur eine gute Möglichkeit das Tor über einen Button in Jarvis zu öffnen. -
Du solltest doch auch diesen Datenpunkt besitzen
shellies/eg_garage_tor/relay/0/command
Da einfach on/ off
-
@kraxelhuber Welche Jarvis Version?
{"setOn":"on","setOff":"on"}
Wenn man die Zustandsaktualisierung sehen möchte, muss man natürlich den
LastChangeBody
entsprechend umstellen, da der im Standard auf letzte Wertänderung steht.
-
@mcu said in MQTT Befehl publishen per Button in Jarvis:
@kraxelhuber Welche Jarvis Version?
v3.1.2
Ich denke, deine Lösung hat am Ende das richtige Ergebnis. Mir ist nur noch nicht ganz klar, wie ich ganz konkret dort hin gelange.
Hast du den Datenpunkt
0_userdata.0.jarvis.test.text3
zunächst manuell in den ioBroker Objekten erstellt? Wenn ja, könntest du davon die Eigenschaften evtl. noch mal als Screenshot zeigen?Oder wird der Datenpunkt aus Jarvis heraus erstellt (bin in Jarvis noch am Anfang)?
-
@kraxelhuber Den DP kann man auswählen oder einfügen. Du musst dort Deinen DP eingeben/ auswählen.
Stell mal bitte die Objekt-Eigenschaften von dem DP rein. Ist es ein String oder number-DP?
Es gibt in der Doku das Kapitel v3 für Einsteiger, dies sollte man erstmal lesen. -
@mcu Ich konnte deine Beschreibung jetzt nachvollziehen, leider funktioniert es aber nicht so wie gewünscht. Das liegt allerdings nicht an Jarvis.
Ich habe jetzt einen Button, der das Topicmqtt.0.shellies.eg_garage_tor.relay.0.command
mit dem String "on" aktualisiert. Das funktioniert, da sich der TimeStamp in der Objektansicht im ioBroker ändert, wenn ich den Button in Jarvis drücke.Hier mal der Datenpunkt, um den es geht:
Vielleicht muss ich noch etwas ausholen, um die Garagentorsteuerung zu erklären. Der verbaute Shelly 1 verhält sich wie ein Taster. Er ist als "Momentary" Switch konfiguriert, der seinen Status nach einer Sekunde wieder automatisch auf "off" setzt, nachdem er ein "on" (oder "toggle") Signal bekommen hat.
Was mich etwas irritiert ist folgendes:
Es macht einen Unterschied, ob ich im ioBroker im Objektbaummqtt.0.shellies.eg_garage_tor.relay.0.command
manuell auf "on" setze, oder ob ich eine MQTT Nachricht an dieses Topic mit dem Wert "on" übermittle. Im ersten Fall springtmqtt.0.shellies.eg_garage_tor.relay.0
nicht kurzfristig auf "on", sondern bleibt auf "off" stehen und das Garagentor bewegt sich nicht. Ich vermute, das es daran liegt, dassmqtt.0.shellies.eg_garage_tor.relay.0.command
schon vorher auf "on" stand und sich der Wert damit nicht geändert hat.
Wenn ich eine MQTT Nachricht übermittle, ändert sich der Wert eigentlich auch nicht (er stand ja vorher schon auf "on"), nichtsdestotrotz springtmqtt.0.shellies.eg_garage_tor.relay.0
für eine Sekunde auf "on" und das Garagentor bewegt sich.Wenn ich dieses Problem nicht so ohne weiteres lösen kann, frage ich mich, ob ich eine MQTT Message an
mqtt.0.shellies.eg_garage_tor.relay.0.command
absetzen kann, wenn ich den Button in Jarvis betätige? -
@kraxelhuber sagte in MQTT Befehl publishen per Button in Jarvis:
mqtt.0.shellies.eg_garage_tor.relay.0.command
Bitte die Objekteigenschaften vom dem Objekt und die Einstellungen vom Geräte-DP der für das Schalten genutzt wird.
Hast du mal den ACK im Button umgestellt? -
@mcu Hier die Objekteigentschaften.
Jarvis:
Auch das Setzen von Ack auf
true
bringt keine Besserung: -
@kraxelhuber Auch mal auf
value
gestellt?
Stell mal die type auf "string"
Als weitere Möglichkeit gäbe es noch den "Taster" -> Umstellen.
Dann aber "setOff":"off" -
@mcu Das habe ich alles durchprobiert, ändert aber leider nichts am Ergebnis
-
- Was passiert, wenn du im ioBroker-DP den Wert off eingibst?
-> nix
Dann sollte es mit Button (val, ACK:true, Taster:true) und Datenpunkt-Eigenschaften
{"setOn":"on","setOff":"off"}
funktionieren.
- Was passiert, wenn du im ioBroker-DP den Wert off eingibst?
-
@mcu said in MQTT Befehl publishen per Button in Jarvis:
Dann sollte es mit Button (val, ACK:true) und Datenpunkt-Eigenschaften
{"setOn":"on","setOff":"off"}funktionieren.
Nein, das hat leider nichs gebracht.
-
@kraxelhuber Taster war eingeschaltet? Impulsdauer hochsetzen?
-
@mcu said in MQTT Befehl publishen per Button in Jarvis:
@kraxelhuber Taster war eingeschaltet? Impulsdauer hochsetzen?
Alles ohne Erfolg.
-
@kraxelhuber Aber "on" kommt doch an und wenn du es in iobroker eingibst wird doch geschaltet?
Muss der command evtl anders aussehen?
Auf "val" stellen.
-
@mcu said in MQTT Befehl publishen per Button in Jarvis:
@kraxelhuber Aber "on" kommt doch an und wenn du es in iobroker eingibst wird doch geschaltet?
Muss der command evtl anders aussehen?Ja und Nein.
Das hatte ich ja schon beschrieben. Der Wert "on" kommt in
mqtt.0.shellies.eg_garage_tor.relay.0.command
an. Das sehe ich an einem veränderten/aktualisierten TimeStamp, wenn ich in Jarvis den Button betätigt habe. Der Wert kommt übrigens an, egal welche Einstellungen ich vorgenommen habe (Taster, ack, val, etc.). Aber der Wert inmqtt.0.shellies.eg_garage_tor.relay.0
springt eben nicht für eine Sekunde auf "on". Das macht er nur, wenn ich eine MQTT message mit dem Wert "on" oder "toggle" nachmqtt.0.shellies.eg_garage_tor.relay.0.command
absende.Und wenn ich den Wert im ioBroker in der Objektstruktur manuell auf "on" setze passiert mit dem Garagentor auch nichts, also das gleiche Ergebnis wie bei Jarvis.
Wenn ich den Wert allerdings in der Objektstruktur manuell von "on" auf "toggle" stelle (oder umgekehrt), dann bewegt sich das Garagentor. Das hängt meiner Ansicht nach damit zusammen, dass der Inhalt dieses Datenfeldes geändert wurde.
Man könnte mein Problem also evtl. auch dadurch lösen, dass ein Klick auf den Jarvis Button immer abwechseln "on" und "toggle" zurückliefert.