Seite 2 von 3
Re: Shelly 1PM Mini Status auslesen
Verfasst: 2. Nov 2024 16:53
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.
Re: Shelly 1PM Mini Status auslesen
Verfasst: 2. Nov 2024 17:33
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
Re: Shelly 1PM Mini Status auslesen
Verfasst: 3. Nov 2024 01:17
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...
Re: Shelly 1PM Mini Status auslesen
Verfasst: 3. Nov 2024 10:24
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
Re: Shelly 1PM Mini Status auslesen
Verfasst: 3. Nov 2024 11:30
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
Re: Shelly 1PM Mini Status auslesen
Verfasst: 4. Nov 2024 00:39
von udo1toni
Gibt es evtl. noch einen Schalter, um mqtt zu aktivieren?
Re: Shelly 1PM Mini Status auslesen
Verfasst: 4. Nov 2024 13:27
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
Re: Shelly 1PM Mini Status auslesen
Verfasst: 7. Nov 2024 13:49
von EmptySoft
Sollte der MQTT command bei Gen2 Geräten nicht so aussehen?
Re: Shelly 1PM Mini Status auslesen
Verfasst: 7. Nov 2024 14:20
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...)
Re: Shelly 1PM Mini Status auslesen
Verfasst: 9. Nov 2024 19:56
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