NEWS
iobroker, MQTT und Shelly - Was geht wie?
-
@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.
-
@mickym sagte in iobroker, MQTT und Shelly - Was geht wie?:
Ich verstehe nicht, warum man auf diese Google Teile steht
Was meinst du damit? Welche Google Teile?
Danke für dein Blockly. Irgendwie hatte ich mir das anders vorgestellt und ich glaube ich werde doch mal über den Shelly Adapter nachdenken. Das ist mit MQTT für mich dann doch nicht so anwenderfreundlich.
-
@th-g Na diese Blockly Puzzles stammen von Google. - ich mag halt lieber die IBM Nodes von NodeRed.
Falls Du gedacht hast, das Blockly was eigenes für iobroker ist, dann muss ich Dich leider enttäuschen.
https://de.wikipedia.org/wiki/Blockly
Es ist eine "Umgebung zum spielerischen Erlernen von Programmierprinzipien"
-
@mickym sagte in iobroker, MQTT und Shelly - Was geht wie?:
Falls Du gedacht hast, das Blockly was eigenes für iobroker ist, dann muss ich Dich leider enttäuschen.
Oh das wusste ich nicht, danke für die Info.
-
Funktioniert so:
Ich habe noch gesehen, dass unter Status auch die Temperaturen einzeln ankommen. Das würde das Blockly wohl deutlich vereinfachen oder?
-
@th-g klar wäre das viel einfacher du könntest direkt das Attribut tC des Objektes in die Datenpunkt e schreiben und die Datenpunkte getrennt abfragen. Auf die Prüfung der id kannst dann verzichten.
-
Ich finde das sehr verwirrend bei MQTT. Ist das immer so, dass die Daten an unterschiedlichen Stellen stehen?
-
@th-g in der Generation 2 ist es komplexer wenn ich daheim bin suche ich mal den Link. Hat schon System. Ich zeig dir dann noch 2 Varianten mit einzelnen Datenpunkten.
-
@mickym So Du musst halt bei Deinem Gerät schauen : https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/Switch#status
Hier für den Shelly 1 Plus - vielleicht geht auch noch eine andere Methode den zu schalten. Nicht nur über den rpc Datenpunkt:
https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/Switch#statusErstelle mal einen Ordner unter Deinem Shelly:
command
und dann einen Datenpunkt:
switch:0
und da schreibst malon
undoff
rein oderon,1
- vielleicht switched dann Dein Schalter nach einer Sekunde wieder zurück.Ansonsten ist im /events/rpc alles was der Shelly sonst selbst meldet wenn nicht im Status und der Ast (bei Dir user_1) kommt aus Deinem rpc Kommando. Du kannst verschiedene User angeben, die dann unter einem eigenen Namen was publishen. Das ist erst alles mit der Generation2 so. Das hat den Vorteil einen User im eigenen RPC anzugeben, da Du dann quasi auch in unterschiedlichen RPC Calls (zum Beispiel Blocklies) die Antwort unter unterschiedlichen topics Dir ausgeben lassen kannst.
Bockly folgt später.
-
@th-g So hier die erste Vereinfachung - einfach die Datenpunkte einzeln triggern lassen:
zweite Vereinfachung - alles in einem Trigger - hier muss man die ID wieder selektieren aber der Zugriff auf die Eigenschaften ist easy:
Aber nun wieder genug gepuzzelt - das können andere besser als ich.
-
Du bist ja ganz schön fit in den Dingen. Für mich ist das schon schwierig alles zu verstehen. Ich werde mir auch RedNode mal ansehen, denn das was ich dort schon gesehen habe, hat ja einen ganz anderen Ansatz.
-
@th-g Der logische Ansatz ist immer der gleiche -
Etwas triggert (Du selbst manuell, eine Hardware, ein zeitliches Ereignis) und Du gibst was aus oder steuerst was. Dazwischen kann man Bedingungen einfügen oder die Daten aufbereiten - das ist bei allen Logikmaschinen gleich .
Bei NodeRed hast Du halt viele Nodes - die bestimmte Teile (wie ein Unterprogramm für Dich erledigen) und deshalb nicht selbst programmiert werden müssen. Wenn ich Dir dabei helfen soll - gerne.Probierst Du das mal mit dem Datenpunkt unter command und dem on,1 aus - würde mich interessieren, ob damit Dein Tor steuerbar ist.
-
Ja werde ich machen aber ich komme da erst am WE zu.
Nochmals Danke für deine Geduld und Hilfe
-
Hallo und ich hab da mal wieder eine kleine Problemstellung. Habe einen neuen Shelly und möchte hier Temperatur und Luftfeuchtigkeit im VIS anzeigen lassen.
Ich dachte ich könnte das Blockly von oben nehmen aber irgendwie habe ich da wohl etwas falsch geändert. Ich würde mich nochmals sehr über Hilfe freuen
So kommen die Daten über MQTT:
-
@th-g Verstehe ich nicht. Du triggert hier auf einen rpc datenpunkt. Du musst doch direkt die Datenpunkte nehmen, wo die Temperatur bzw. Luftfeuchtigkeit drinsteht.
Du musst doch auf diese beiden DP triggern:
Wenn es um die Anzeige im VIS geht - würde ich über ein Alias die Temperatur und Luftfeuchte extrahieren - da brauchst kein Blockly