Shelly 1PM Mini Status auslesen

Allgemeine Fragen zum Thema "Smart Home" und Entscheidungshilfen

Moderator: seppy

Harka
Beiträge: 423
Registriert: 30. Apr 2021 13:13
Answers: 15

Re: Shelly 1PM Mini Status auslesen

Beitrag von Harka »

Moin,
hast Du mal versucht über shellies/shellyrgbw21/color/0/command ein on bzw. off zu senden? Wenn ich die Doku richtig verstehe bedeutet source nur woher der letzte Befehl kam.

PJH
Beiträge: 121
Registriert: 23. Mai 2017 08:32
Answers: 0
Wohnort: Duisburg
Kontaktdaten:

Re: Shelly 1PM Mini Status auslesen

Beitrag von PJH »

Hallo, das ist meine thing-Eingabe:

Code: Alles auswählen

Thing topic Lightstrip1 "Shelly RGBW"
	{
    	Channels:

        Type switch: shellyrgbw21 "ShellyRGB2-1" [ commandTopic="shellies/shellyrgbw21/color/0/command",
		transformationPattern="JSONPATH:$.output",
      		off="off",
      		on="on" ] 
									    			

		Type string: json "ShellyRGB2-1 Status" [ stateTopic="shellies/shellyrgbw21/color/0/status" ]
		
		
	}
Im MQTT-Explorer sehe ich, dass on und off (optisch) an richtiger Stelle ankommt, aber, wie schon gesagt, es tut sich nix, mit und ohne "command" hinter color/0.

Aus der Weboberfläche des Shellys funktioniert das.

Danke und schöne Grüße. PJH

Benutzeravatar
udo1toni
Beiträge: 14850
Registriert: 11. Apr 2018 18:05
Answers: 232
Wohnort: Darmstadt

Re: Shelly 1PM Mini Status auslesen

Beitrag von udo1toni »

Versuche bitte zunächst mal, ob Du mit dem MQTT Explorer die Lampe steuern kannst. Dafür gibt es die Publish-Kachel, in der Du das vollständige Topic und die Payload eintragen musst. Außerdem musst Du auswählen, in welchem Format die Payload vorliegt, also im Fallvon command das Format raw anwählen. Über die Publish Schaltfläche sendest Du dann die Nachricht. Erst wenn dieser Teil funktioniert, solltest Du an die Integration in openHAB gehen.

Gewöhnlich reicht ja ein Channel aus, hier ein color Channel im rgb-Modus.
Allerdings unterstützt openHAB kein RGBW, und die Lampe selbst wird mutmaßlich nicht den Weiß-Anteil selbst bestimmen und entsprechend setzen.
Sieht dann als UI-Code so aus:

Code: Alles auswählen

UID: mqtt:topic:mosquitto:1d6214d04a
label: Generic MQTT Thing
thingTypeUID: mqtt:topic
configuration: {}
bridgeUID: mqtt:broker:mosquitto
channels:
  - id: color
    channelTypeUID: mqtt:color
    label: color
    description: ""
    configuration:
      commandTopic: shellies/shellyrgbw21/color/0/set
      colorMode: RGB
      transformationPatternOut:
        - ""
      stateTopic: shellies/shellyrgbw21/color/0/status
      transformationPattern:
        - JS:|json=JSON.parse(input); json.red+","+json.green+","+json.blue;
      formatBeforePublish: '{"red":%1$d,"green":%2$d,"blue":%3$d}'
Da hier mehrere Werte aus dem JSON ausgewertet werden müssen, muss man ankommend auf JavaScript ausweichen (andere Scriptsprachen gingen natürlich auch).
Ausgehend muss das passende JSON ebenso zusammengezimmert werden.
Es gäbe übrigens auch eine Option, den ON/OFF Befehl über JSON auf dem set-Topic zu senden:

Code: Alles auswählen

- id: switch
    channelTypeUID: mqtt:switch
    label: switch
    configuration:
      formatBeforePublish: '{"turn":"%s"}'
      transformationPatternOut:
        - ""
      commandTopic: shellies/shellyrgbw21/color/0/set
      stateTopic: shellies/shellyrgbw21/color/0/status
      transformationPattern:
        - JS:|json=JSON.parse(input); if(json.ison) "on"; else "off";
      off: off
      on: on
Da ison vom Typ Boolean ist, Command und State aber gleich sein müssen, bleibt auch hier für das Transformation Pattern nur der "Vorschlaghammer" mit einem Inline Script.
Allerdings benötigt man diesen Channel eigentlich gar nicht, da auch das Color Item auf Wunsch den Zustand ON oder OFF liefern kann (.getStateAs(OnOffType))
Der weiß-Channel müsste im Zweifel als separater Dimmer Channel angelegt werden. Ob die Lampe damit umgehen kann, wenn die Farben unabhängig vom weiß gesendet werden, musst Du aber selbst ausprobieren, ich habe keine solchen Lampen...
openHAB4.3.0 stable in einem Debian-Container (bookworm) (Proxmox 8.3.1, LXC), mit openHABian eingerichtet

PJH
Beiträge: 121
Registriert: 23. Mai 2017 08:32
Answers: 0
Wohnort: Duisburg
Kontaktdaten:

Re: Shelly 1PM Mini Status auslesen

Beitrag von PJH »

Vielen Dank,

ich kann machen, was ich will, ich bekomme den RGBW2 auch mit dem MQTT-Explorer nicht zum Schalten.

Mit der Weboberfläche des Shelly funktioniert es einwandfrei und ich sehe im MQTT-Explorer die Anzeige

shellies
shellyrgbw21
color
0 = on

Ich habe, nach Deinem Vorschlag mit der Formatübergabe raw dann auf diesen Datenpunkt on und/oder off "gepublished".

Die Anzeige nach 0 = ändert sich entweder auf on oder off genau so geschrieben und angezeigt als wenn das Kommando aus der Weboberfläche kommt.

Aber der Shelly schaltet nicht.

Genauso bringe ich das aus openHAB hin, aber wie gesagt, der Shelly schaltet nicht.

Danke nochmals und einen schönen Sonntagsgruß. PJH

PJH
Beiträge: 121
Registriert: 23. Mai 2017 08:32
Answers: 0
Wohnort: Duisburg
Kontaktdaten:

Re: Shelly 1PM Mini Status auslesen

Beitrag von PJH »

Ich habe mir einmal angeschaut, was im MQTT-Explorer bei meinen Shelly 1PM Mini angezeigt wird.

@Harka hat recht mit der Annahme, dass bei "source" nur angezeigt wird, woher das Kommando kommt.

So wird bei meinen 1PMs bei "source" angezeigt

wenn das Kommando vom Webinterfcae des 1PM kommt: source:WS_in

kommt das Kommando von openHAB oder vom MQTT-Explorer: source:mqtt.

Beim RGBW2 steht source:http und es ändert sich auch nix, wenn das Schaltkommando aus openHAB oder vom MQTT-Explorer direkt kommt.

Ich habe den Shelly RGBW2 jetzt einmal zurück gesetzt, es ändert sich aber nix.

Schöne Grüße. PJH

Benutzeravatar
udo1toni
Beiträge: 14850
Registriert: 11. Apr 2018 18:05
Answers: 232
Wohnort: Darmstadt

Re: Shelly 1PM Mini Status auslesen

Beitrag von udo1toni »

Gibt es evtl. noch einen Schalter, um mqtt zu aktivieren?
openHAB4.3.0 stable in einem Debian-Container (bookworm) (Proxmox 8.3.1, LXC), mit openHABian eingerichtet

PJH
Beiträge: 121
Registriert: 23. Mai 2017 08:32
Answers: 0
Wohnort: Duisburg
Kontaktdaten:

Re: Shelly 1PM Mini Status auslesen

Beitrag von PJH »

Hallo, ja, es gibt einen, aber der ist eingeschaltet und mit der richtigen IP-Adresse zu Mosquitto eingerichtet.

Das Ein- Ausschaltkommando kommt ja auch auf dem Mosquitto an, nur es tut sich nix.

Mittlerweile kann ich den RGBW2 über openHAB mit dem Shelli-Binding Ein- und Ausschalten, dafür bekomme ich aber die Werte zur Freistellung "nicht rüber".

Schöne Grüße. PJH

EmptySoft
Beiträge: 225
Registriert: 7. Jan 2020 14:45
Answers: 2
Kontaktdaten:

Re: Shelly 1PM Mini Status auslesen

Beitrag von EmptySoft »

Sollte der MQTT command bei Gen2 Geräten nicht so aussehen?

Code: Alles auswählen

<topic_prefix>/command/<component:id>
BYe
Harald

Benutzeravatar
udo1toni
Beiträge: 14850
Registriert: 11. Apr 2018 18:05
Answers: 232
Wohnort: Darmstadt

Re: Shelly 1PM Mini Status auslesen

Beitrag von udo1toni »

Ja, nein, es kommt auf die Version und das Modell an, d.h. man muss in der API Dokumentation nachschauen.
Leider hat sich Shelly dazu entschieden, die ganze Angelegenheit maximal kompliziert zu machen.

Mein Tipp an der Stelle ist eigentlich immer, die Shelly Firmware mit Tasmota zu ersetzen, falls das möglich ist (da sollte man immer die Tasmota Doku zu Rate ziehen, dort ist für eigentlich jedes unterstützte Gerät genau erklärt, wie man das bewerkstelligt).

Ich habe hier nur einen einfachen Shelly Dimmer auf Tasmota geflasht, aber so sieht das dann als things-Definition aus:

Code: Alles auswählen

     Thing topic shellyDim_1 "Shelly Dimmer 1" @ "mqtt" [
         availabilityTopic="t_special/shellydim1/tele/LWT",
         payloadNotAvailable="Offline",
         payloadAvailable= "Online"
      ]{
        Channels:
            Type dimmer : ch1 "Kanal 1"     [ stateTopic="t_special/shellydim1/stat/RESULT", transformationPattern="REGEX:(.*Dimmer.*)∩JSONPATH:$.Dimmer", commandTopic="t_special/shellydim1/cmnd/Dimmer", step="5" ]
            Type string : tele    "Tele"    [ stateTopic="t_special/shellydim1/tele/STATE" ]
            Type switch : lwt     "LWT"     [ stateTopic="t_special/shellydim1/tele/LWT",on="Online",off="Offline" ]
      }
Ich habe bei mir als fullTopic %topic%/%prefix%/ eingetragen und der Dimmer hat das Topic t_special/shellydim1, so dass sich im MQTT Explorer eine übersichtlichere Struktur ergibt (es gibt noch t_switch, t_shutter usw, weil ich davon buchstäblich Dutzende habe...)
openHAB4.3.0 stable in einem Debian-Container (bookworm) (Proxmox 8.3.1, LXC), mit openHABian eingerichtet

PJH
Beiträge: 121
Registriert: 23. Mai 2017 08:32
Answers: 0
Wohnort: Duisburg
Kontaktdaten:

Re: Shelly 1PM Mini Status auslesen

Beitrag von PJH »

Schon wieder eine Frage, allerdings zu Shelly Plug S.

Ich bekomme den Plug S über das Shelly Binding in mein openHAB 3.3 zwar eingebunden, aber er geht nicht online.

Und zwar ist das so: Auf die eingestellte IP-Adresse (mit der ich mich über den Browser ohne Probleme verbinden kann) verbindet sich der Plug S nicht, wohl aber auf eine IP-Adresse unter der schon ein Shelly Schalter arbeitet.

Es scheint mir also so zu sein, dass der Shelly Plug S mit dem Binding unter openHAB 3.3 nicht funktioniert.

Hat jemand, der diese Plugs bereits eingebunden hat, einen Tipp, ob es doch geht.

Auch mit MQTT tue ich mich schwer, da muss ich noch basteln, oder kann mir jemand der Forumsteilnehmer eine entsprechend Konfiguration mitteilen?

Vielen Dank und einen schönen Gruß. PJH

Antworten