Seite 4 von 4

Re: Shelly plus 1

Verfasst: 17. Okt 2023 17:33
von Ricotchet
Danke udo1toni das hat mich ein ganzes Stück weitergebracht mit diesem Thing Code

Code: Alles auswählen

    Thing topic shelly1pmTerasse "Terasse" @ "Network" 
    {
    Channels:
        Type switch : sPM1_Terasse "Decke" [
                                        stateTopic="shellyplus1pm-d4d4da082310/status/switch:0",
                             transformationPattern="JSONPATH:$.output",
                                      commandTopic="shellyplus1pm-d4d4da082310/rpc",
                               formatBeforePublish="{\"id\": \"0\",\"src\": \"shellyplus1pm-d4d4da082310\", \"method\": \"Switch.Set\",	\"params\": {\"id\":0,\"on\":\"%s\"}}",
                                               off="false",
                                                on="true"
                                        ]
    } 
Funktioniert schon mal der Status
Für das steuern sende ich und ich sende per MQTT an das Topic "shellyplus1pm-d4d4da082310/rpc"
{
"id" : "0",
"src" : "shellyplus1pm-d4d4da082310",
"method" : "Switch.Set",
"params" : {
"id" : 0,
"on" : "false"
}
}
Dort kriege ich als Antwort:
{
"id" : 0,
"src" : "shellyplus1pm-d4d4da082310",
"dst" : "shellyplus1pm-d4d4da082310",
"error" : {
"code" : -103,
"message" : "Missing required argument 'on'!"
}
}
Es sieht so aus als ob er das on nicht sehen würde laut dieser https://shelly-api-docs.shelly.cloud/ge ... CChannels/ Doku von Shelly sollte es richtig sein jemand eine Idee?

Oder darf das
"false"
nicht in Anführungszeichen wie müsste ich den Code dann anpassen?

Re: Shelly plus 1

Verfasst: 17. Okt 2023 18:00
von Ricotchet
Nachtrag: nachdem ich das hier per Hand gepublished habe funktioniert das ausschalten
{
"id" : "0",
"src" : "shellyplus1pm-d4d4da082310",
"method" : "Switch.Set",
"params" : {
"id" : 0,
"on" : false
}
}

Wie muss ich jetzt den Code ändernum von
"on" : "false"
auf
"on" : false
zu kommen?

Re: Shelly plus 1

Verfasst: 17. Okt 2023 18:13
von Ricotchet
Nach etwas ausprobieren doch selbst hinbekommen hier der Thing Code für die Nachwelt

Code: Alles auswählen

 Thing topic shelly1pmTerrasse "Terrasse" @ "Network" 
    {
    Channels:
        Type switch : sPM1_Terrasse "Decke" [
                                        stateTopic="shellyplus1pm-d4d4da082310/status/switch:0",
                             transformationPattern="JSONPATH:$.output",
                                      commandTopic="shellyplus1pm-d4d4da082310/rpc",
                               formatBeforePublish="{\"id\": \"0\",\"src\": \"shellyplus1pm-d4d4da082310\", \"method\": \"Switch.Set\",	\"params\": {\"id\":0,\"on\":%s}}",
                                               off="false",
                                                on="true"
                                        ]
    }                                    
}
und das Item

Code: Alles auswählen

Switch              Terrasse_Licht                  "Terasse"             (Terrasse){channel="mqtt:topic:Mosquitto:shelly1pmTerasse:sPM1_Terrasse"}

Re: Shelly plus 1

Verfasst: 17. Okt 2023 18:17
von udo1toni
Genau. Der Punkt ist, dass der Wert true/false ein Boolean Wert ist, der nicht in Anführungszeichen stehen darf. Das war mir oben durchgerutscht.

Re: Shelly plus 1

Verfasst: 18. Okt 2023 19:03
von EmptySoft
Ricotchet hat geschrieben: 17. Okt 2023 18:13 Nach etwas ausprobieren doch selbst hinbekommen hier der Thing Code für die Nachwelt
Danke

Re: Shelly plus 1

Verfasst: 2. Jan 2024 11:54
von schultzi007
Hallo,
bei mir funktioniert der Shelly 1 plus über mqtt soweit, bis auf das Schalten.
Es läuft noch openHAB 3.4.2 und mosquito alles über docker.
Das thing sieht so aus:

Code: Alles auswählen

UID: mqtt:topic:267e677471:sh1P_garage
label: shP1 Garage
thingTypeUID: mqtt:topic
configuration: {}
bridgeUID: mqtt:broker:267e677471
channels:
  - id: garage_Status
    channelTypeUID: mqtt:switch
    label: Status Garage
    description: ""
    configuration:
      qos: 1
      stateTopic: sh1P_Garage/status/input:100
      transformationPattern: JSONPATH:$.state
      off: "false"
      on: "true"
  - id: temperature
    channelTypeUID: mqtt:number
    label: Temperatur Garage
    description: ""
    configuration:
      unit: °C
      qos: 1
      stateTopic: sh1P_Garage/status/temperature:100
      transformationPattern: JSONPATH:$.tC
  - id: GaragenTaster
    channelTypeUID: mqtt:switch
    label: Garage Taster
    description: ""
    configuration:
      qos: 1
      formatBeforePublish: '{"src":"shellyplus1-80646fcb2bc8\","method":"Switch.Set","params":{"id":0,"on":%s}}'
      commandTopic: sh1P_Garage/events/rpc
      stateTopic: sh1P_Garage/status/switch:0
      transformationPattern: JSONPATH:$.output
      off: "false"
      on: "true"
  - id: sh1P_humidity_garage
    channelTypeUID: mqtt:number
    label: Luftfeuchtigkeit Garage
    description: ""
    configuration:
      step: 1
      qos: 1
      stateTopic: sh1P_Garage/status/humidity:100
      transformationPattern: JSONPATH:$.rh
Wenn man den Shelly über die eigene Seite schaltet, wird es auch so in oh registriert.
Den formatBeforePublish String wird auch so übertragen und ist im MQTT Explorer in events so zu lesen. Nur der Shelly schaltet nicht.
Für jede Hilfe bin ich dankbar!

Grüße

Re: Shelly plus 1

Verfasst: 2. Jan 2024 17:44
von udo1toni
Der Backslash dürfte da nicht hingehören. Falls Du tatsächlich einen Backslash an der Stelle brauchst, musst Du ihn doppelt angeben, denn der Backslash ist das Escape Zeichen.

Re: Shelly plus 1

Verfasst: 3. Jan 2024 17:07
von schultzi007
Hallo, der Backslash gehört nicht da hin; funktionier aber in keiner Variante ( ohne, \ oder \\).
Im MQTT-Explorer bekomme ich aber auch keinen JSON String hin, der den Shelly schaltet :( .
Gefühlt habe ich schon alle Seiten mit Shelly 1 plus mqtt durchgesucht und alle Hinweise ausprobiert, leider ohne Erfolg.

Wenn man Tasmota auf den Shelly flasht, wäre dann auch das Addon verfügbar?

Re: Shelly plus 1

Verfasst: 3. Jan 2024 18:31
von udo1toni
Wenn Du den Shelly mit Tasmota flashst, ist es anschließend ein Tasmota Device, mit allen Funktionen, die dort für die Hardware zur Verfügung stehen.
Siehe https://templates.blakadder.com/shelly_plus_1.html, beachte auch die Warnung, falls Deine Firmware zu neu ist, kann das Gerät nicht OTA (over the air) geflasht werden, d.h. Du musst das Gerät dann über die serielle Schnittstelle flashen. Das gilt natürlich nur, solange noch die Original Firmware aktiv ist, wenn mal Tasmota drauf ist, funktioniert auch OTA Update wieder.

Grundsätzlich sollte das auch mit der nativen Shelly mqtt Schnittstelle gehen, nur hat die Firma alles dazu getan, es dem Kunden möglichst unbequem zu machen. In Anbetracht der Tatsache, dass die ersten Shellies recht einfach über mqtt einzubinden waren, muss ich hier auch Absicht unterstellen.
Auf der anderen Seite ist Tasmota eh die bessere Wahl... ;)

Re: Shelly plus 1

Verfasst: 4. Jan 2024 18:48
von schultzi007
Hallo,
so, nun habe ich den Fehler gefunden :)
Das comand topic war:

Code: Alles auswählen

commandTopic: sh1P_Garage/events/rpc
muss aber

Code: Alles auswählen

commandTopic: sh1P_Garage/rpc
sein.
Bisher passten die topics entsprechend der Pfade und Namen im MQTT Explorer.

Zum Glück kann ich mich jetzt um die Things kümmern, die seit dem Update von 3.4 auf 4.1 nicht mehr laufen ;)

Vielen Dank nochmal!!