NEWS
iobroker, MQTT und Shelly - Was geht wie?
-
@th-g sagte in iobroker, MQTT und Shelly - Was geht wie?:
Die App geht und funktioniert sehr gut
Gut dann sollte doch wenn du auf true schaltest - der Shelly sich nach einer Sekunde wieder ausschalten. Das hat mit mqtt nichts zu tun. Sprich wenn Du über mqtt einschaltest, solltest Du doch sehen, wie der Shelly in der App einschaltet und sich automatisch ausschaltet. Die Funktion, dass nach 1 Sekunde wieder ausgeschaltet wird, ist alleine eine Funktion des Shellies und hat nichts mit der Ansteuerung zu tun.
Das true Schicken ist doch nichts anderes als den Shelly einzuschalten. Ausschalten mach t der Shelly selbst über die timer Funktion.
Mit der App machst Du doch nichts anderes als immer wieder auf den EIN Knopf zu drücken? Wie bedienst du denn die App?
-
Ich kann nur sagen, dass es derzeit nicht geht. Es hat keine Auswirkungen wenn ich nach dem ersten true nach 5 Sekunden ein zweites true sende. Das Tor stoppt nicht.
Mir ist auch klar das das nicht mit MQTT zu tun hat. Die Frage ist ja, wenn über MQTT ein true gesendet wird, ob das sozusagen an der Schaltuhr vorbei geht.
Ich werde das nochmals testen aber dafür muss ich in die Garage.
@mickym sagte in iobroker, MQTT und Shelly - Was geht wie?:
Mit der App machst Du doch nichts anderes als immer wieder auf den EIN Knopf zu drücken? Wie bedienst du denn die App?
Richtig. Knopf drücken und ist aktiv (Relais schaltet), dann dreht sich dieser für eine Sekunden, um dann bbzuschalten und Relais öffnet.
-
@th-g Das siehst Du doch in der app. Wenn Du in der app - einschaltest und ein Timer eingeschaltet ist, dann nimmt doch der blaue Ring ab. Das wieder ausschalten macht der Shelly ja selbst.
Ansonsten kannst Du ja mit "on": true und "on": false - selbst ein und ausschalten. true und false bitte nicht in Anführungszeichen. sondern so wie ich das gepostet habe.
Wenn Du über mqtt- einschaltest, dann sollte in der app der Ring ja auch blau leuchten und dann abnehmen.
-
In der App wird nichts angezeigt wenn es über den iobroker ausgeführt wird.
-
@th-g Das ist komisch. Geht es denn wenn Du manuell EIN - und AUS schaltest?
-
Das Problem ist, wie schon vermutet, dass die Schaltuhr mit diesem JSON nicht angesprochen wird.
Sende ich ein true geht das Tor hoch aber das Relais bleibt angezogen und blockiert jede weitere Eingabe.
Sende ich dann ein false und danach wieder ein true fährt das Tor wieder runter. -
@th-g Na OK - dann funktioniert bei den Generation 2 der Timer halt wahrscheinlich per user - aber immerhin kannst Du mit manuellem EIN und Ausschalten das Tor erst mal schalten.
So nun lesen wir die Config aus.
{ "id": 1, "src":"user_1", "method":"Switch.GetConfig", "params": { "id":0 } }
und dann poste mal - ob den Response der dann zurück kommt.
Die Antwort hast Du dann unter user_1 im rpc Datenpunkt.
-
@mickym sagte in iobroker, MQTT und Shelly - Was geht wie?:
Die Antwort hast Du dann unter user_1 im rpc Datenpunkt.
{ "id": 1, "src": "shellyplus1-441793cda980", "dst": "user_1", "result": { "id": 0, "name": null, "in_mode": "detached", "initial_state": "off", "auto_on": false, "auto_on_delay": 60, "auto_off": true, "auto_off_delay": 1 }
-
@th-g Hmm das schaut aber gut aus:
auto_off ist true und auto_off_delay:1 -
Ich dachte Du hast 5 s gerade eingestellt?
-
Nein das war nur meine Wartezeit geschätzt hätten auch drei sein können. 1 Sekunde ist eingestellt im Shelly
-
@th-g sagte in iobroker, MQTT und Shelly - Was geht wie?:
Nein das war nur meine Wartezeit geschätzt hätten auch drei sein können. 1 Sekunde ist eingestellt im Shelly
Ja aber selbst die Konfig meldet es richtig zurück. Schalte halt mal auf 2 oder 3 Sekunden, ob das was ändert.
-
Jetzt mit drei Sekunden.
{ "id": 1, "src": "shellyplus1-441793cda980", "dst": "user_1", "result": { "id": 0, "name": null, "in_mode": "detached", "initial_state": "off", "auto_on": false, "auto_on_delay": 60, "auto_off": true, "auto_off_delay": 3 }
-
Nach dem Schalten - (evtl. Sekunden nochmal erhöhen) - schicke einen Status Request hinterher:
{ "id": 1, "src":"user_1", "method":"Switch.GetStatus", "params": { "id":0 } }
In dem Status - sollte es 2 Werte geben, ob der timer getriggert wurde:
-
Das mache ich morgen, sonst nerve ich die Nachbarn mit dem ständigen ruf und runter
-
@mickym Gut - aber im Moment bin ich auch etwas ratlos - in meinen Augen hängt es eigentlich nicht an der Konfiguration oder MQTT - aber keine Ahnung warum der interne Timer nicht losläuft.
-
@haus-automatisierung said in iobroker, MQTT und Shelly - Was geht wie?:
Finde solche Aussagen immer Interessant. Klar läuft das. Aber: Den Shelly Adapter installiert man, liest kurz die Doku und konfiguriert alles so. Selbst als Einsteiger ist man (ohne etwas mit Topics oder JSON zu tun zu haben) in 5min fertig.
Ich bin noch relativ neu im Bereich IOBroker. Für meinen Shelly Plus Plug S benötige ich die Version 6.4.0.
Laut github ist die Version 6.4.0 als latest auch schon released.
npm weist diese Version jedoch als Beta aus und im IOBroker wird auch nur die 6.3.1 als verfügbare Version ausgewiesen.
Ist da in den kommenden Tagen mit einer Änderung zu rechnen oder muss ich tatsächlich die Repo von IOBroker auf Beta umstellen um die Version 6.4.0 verwenden zu können?Ach ja, der Shelly Plus Plug S wirft bei mir unter der Version 6.3.1 den Fehler "device unknown, configuration for client with id "shellyplusplugs-3ce90e2fbd70" does not exist!", was vermutlich daran liegt, dass der Plus Plug S in 6.3.1 noch nicht bekannt ist
Um einigen Anmerkungen entgegen zu treten "shellyplusplugs-3ce90e2fbd70" ist natürlich die originäre Client-ID
-
@andrew Ich muss mal gucken, wieviele die Beta aktuell installiert haben. Das läuft immer ein paar Wochen, bis diese in stable freigegeben wird.
-
Habe heute einen weiteren Shelly Plus 1 mit Add-On in Betrieb genommen. In der Shelly App funktioniert alles und das Gerät sendet auch fleißig seine Werte an den MQTT Broker.
Hier möchte ich nur die drei Temperaturwerte im VIS anzeigen lassen.
Drei DP habe ich fürs VIS schon angelegt.
Über MQTT kommt folgendes:
{ "src": "shellyplus1-441793d07ba4", "dst": "shellyplus1-441793d07ba4/events", "method": "NotifyStatus", "params": { "ts": 1677158862.21, "temperature:101": { "id": 101, "tC": 10.31, "tF": 50.56 } } }
Je nach dem wie sich die Werte ändern, steht dort für die Temperatur die ID 100, 101 oder 102 mit den entsprechendem tC Wert.
Nun möchte ich, dass bei jeder Änderung der Wert in dem entsprechenden Datenpunkt geändert wird.
Also
id100 zum DP Ansaugluft
id101 zum DP Zuluft
id102 zum DB AbluftWie mache ich das im Blockly (ich brauche ein Erfolgserlebnis :-)?
-
@th-g Ja kommt gleich - ich hasse nur puzzle - in Zukunft - steigst Du auf ein anderes Tool um. wenn ich es fertig habe - muss ich auch erst mal weg. Ich verstehe nicht, warum man auf diese Google Teile steht - ist mir gerade auch 3 mal abgeschmiert. ,)
-
@th-g So nun zu dem Puzzlen - ich mach das aber nicht nochmal - es kostet einfach viel Zeit und ist so umständlich. Du solltest dir doch mal NodeRed anschauen. Nur eine Empfehlung. Ich weiß ich bin hier in der Minderheit.
So es hängt nun davon ab - ob in dem JSON das Objekt unter params immer "temperature:101" heißt oder nicht. Je nachdem habe ich Dir eine JSONATA Variante mit einem Wildcard unter ID 101 gezeigt, ansonsten wenn das konstant ist, dann halt direkt mit Attribut von Objekt.
Das Falls attribute funktioniert nicht - dann stürzt diese blöde Teil einfach ab. Also musst Du eine Variable id auf jedenfall verwenden, wenn Du den Switch verwenden willst.
Wenn temperature:101 - immer als Eigenschaftsname bleibt dann kannst auch oben die id direkt als
Attribut des Objektes auslesen.
Hier zum Import:
aber wie gesagt - viel weiter werde ich nicht puzzeln. Aber nun muss ich erst mal weg. Wenn Du Fragen hast, melde ich mich sporadisch von unterwegs. Aber nicht mit Code.
Als Trigger nimmst natürlich Deinen mqtt- Datenpunkt.
Alias funktioniert nicht, da Du ja je ID andere Datenpunkte beschreiben willst.