[Modul] Shelly

Darf ich mir das mal per Fernwartung anschauen?

Grüße,
Kai

Danke Kai, das war genau der Hinweis, welchen ich benötigt habe. Ich bin es gewöhnt bei den Shellys immer eine Statusvariable zu nehmen und nicht die Instanz. So geht es wunderbar.

LG. Werner

Sorry für die späte Antwort, aber klar. Anbei der Debug. Ich habe einmal shortpush An und Aus, einmal Longpush an und aus und wieder Shortpush an und aus gemacht.

dump.txt (62,6 KB)

Hallo Kai

Ich habe Shelly 2.5 im Roller-Mode.
Die Firmware auf dem Shelly ist 20220209-092928/v1.11.8-g8c7bb8d (letzte aktuelle Version)
Dein Modul ist der letzte Beta Stand.

Einige Werte des Shelly werden noch als „Invalid Value“ interpretiert.
Hier ein Debug Auszug einer Stop-Sequenz:

TXT: 03/23/2022, 08:09:49 AM |                 JSON | {"DataID":"{7F7632D9-FA40-4F38-8DEA-C83CD4325A32}","PacketType":3,"QualityOfService":0,"Retain":true,"Topic":"shellies/bedroom_blind/roller/0","Payload":"stop"}
TXT: 03/23/2022, 08:09:49 AM |           MQTT Topic | shellies/bedroom_blind/roller/0
TXT: 03/23/2022, 08:09:49 AM |       Roller Payload | stop

TXT: 03/23/2022, 08:09:49 AM |                 JSON | {"DataID":"{7F7632D9-FA40-4F38-8DEA-C83CD4325A32}","PacketType":3,"QualityOfService":0,"Retain":true,"Topic":"shellies/bedroom_blind/roller/0/pos","Payload":"79"}
TXT: 03/23/2022, 08:09:49 AM |           MQTT Topic | shellies/bedroom_blind/roller/0/pos
TXT: 03/23/2022, 08:09:49 AM |       Roller Payload | 79
TXT: 03/23/2022, 08:09:49 AM |       Roller Payload | 79

TXT: 03/23/2022, 08:09:49 AM |                 JSON | {"DataID":"{7F7632D9-FA40-4F38-8DEA-C83CD4325A32}","PacketType":3,"QualityOfService":0,"Retain":true,"Topic":"shellies/bedroom_blind/roller/0/stop_reason","Payload":"normal"}
TXT: 03/23/2022, 08:09:49 AM |           MQTT Topic | shellies/bedroom_blind/roller/0/stop_reason
TXT: 03/23/2022, 08:09:49 AM |       Roller Payload | normal
TXT: 03/23/2022, 08:09:49 AM |   ReceiveData Roller | Invalid Value: normal

TXT: 03/23/2022, 08:09:49 AM |                 JSON | {"DataID":"{7F7632D9-FA40-4F38-8DEA-C83CD4325A32}","PacketType":3,"QualityOfService":0,"Retain":true,"Topic":"shellies/bedroom_blind/roller/0/power","Payload":"0.00"}
TXT: 03/23/2022, 08:09:49 AM |           MQTT Topic | shellies/bedroom_blind/roller/0/power
TXT: 03/23/2022, 08:09:49 AM |       Roller Payload | 0.00
TXT: 03/23/2022, 08:09:49 AM |   ReceiveData Roller | Invalid Value: 0.00

TXT: 03/23/2022, 08:09:49 AM |                 JSON | {"DataID":"{7F7632D9-FA40-4F38-8DEA-C83CD4325A32}","PacketType":3,"QualityOfService":0,"Retain":true,"Topic":"shellies/bedroom_blind/relay/power","Payload":"0.00"}
TXT: 03/23/2022, 08:09:49 AM |           MQTT Topic | shellies/bedroom_blind/relay/power
TXT: 03/23/2022, 08:09:49 AM |        Power Payload | 0.00

TXT: 03/23/2022, 08:09:49 AM |                 JSON | {"DataID":"{7F7632D9-FA40-4F38-8DEA-C83CD4325A32}","PacketType":3,"QualityOfService":0,"Retain":true,"Topic":"shellies/bedroom_blind/roller/0/energy","Payload":"364"}
TXT: 03/23/2022, 08:09:49 AM |           MQTT Topic | shellies/bedroom_blind/roller/0/energy
TXT: 03/23/2022, 08:09:49 AM |       Roller Payload | 364
TXT: 03/23/2022, 08:09:49 AM |   ReceiveData Roller | Invalid Value: 364

TXT: 03/23/2022, 08:09:49 AM |                 JSON | {"DataID":"{7F7632D9-FA40-4F38-8DEA-C83CD4325A32}","PacketType":3,"QualityOfService":0,"Retain":true,"Topic":"shellies/bedroom_blind/relay/energy","Payload":"364"}
TXT: 03/23/2022, 08:09:49 AM |           MQTT Topic | shellies/bedroom_blind/relay/energy
TXT: 03/23/2022, 08:09:49 AM |       Energy Payload | 364

Es sind jeweils die „/roller/0/xxx“ Topics.
„power“
„energy“
„stop_reason“

Dies als Information, keine Eile, einfach falls Du das Modul mal in den Händen hast.

Dank und Gruss!

Tom

Schau mal ob das mit der aktuellen Beta Version funktioniert.

Grüße,
Kai

Kannst du mal die aktuelle Beta Version testen, da sollte das auch gefixt sein.

Grüße,
Kai

Tip top!

Dank und Gruss!

Tom

Es gibt eine neue Beta Version, da sollte es funktionieren, kannst du das mal testen?

Grüße,
Kai

Shelly Plus i4 funktioniert jetzt einwandfrei mit allen 4 Eingängen. DANKE

Hallo Kai,

die Beat geht. Habe alle 4 Eingänge gerade getestet. Vielen Dank für Deine Hilfe und Unterstützung.

Viele Grüße

Joerg

~WRD0002.jpg

Hi Kai,
mit dem Update sehe ich die Werte für Ereignis Kompinente und Ereignis.

Bei einem shortpush sieht man als Ereignis Folgendes:

Taster wird gedrückt: btn_down
Taster wird losgelassen: btn_up
Abschließender Wert: single_push

Bei einem longpush sieht man Folgendes:

Taster wird gedrückt: btn_down
Taster wird gehalten: long_push
Taster wird losgelassen: btn_up
Abschließender Wert: btn_up

Screenshot Shortpush:

Screenshor Longpush:

Prinzipiell funktioniert es also, vielen Dank dafür! Allerdings glaube ich, dass es besser wäre, wenn wie bei den Shellys der ersten Generation ein Boolean für Longpush auf TRUE gesetzt wird. Dann wäre auch mein php Skript für beide Generationen kompatibel. Kannst du das so umsetzen, oder gibt es einen Grund für die neue Methode?

dump.txt (35,9 KB)

Der Grund ist, dass die API von Shelly sich verändert hat.
Ich kann aber bei Gelegenheit mal schauen, ob ich es anders aufbauen kann.

Grüße,
Kai

Verstehe… Ist kein großes Drama, ich hab mittlerweile einen Work-Arround geschrieben. Dazu habe ich eine Longpush-Variable in der Instanz des Shellys erstellt und ein Aktiosskript hinzugefügt. Im Skript rufe ich dann ein Push2Bool Skript auf:
Hier das Aktionsskript:

<?php
$Ereignis = 46261;
$Bool     = 14127;

IPS_RunScriptEx(45453,Array("EreignisID" => $Ereignis, "BooleanID" => $Bool));
?>

Und hier das Push2Bool Skript:

<?php
$SRC   = $_IPS['EreignisID']; // Source Integer
$AIM   = $_IPS['BooleanID'];  // Target Boolean

$Ereignis = GetValueString($SRC);

if ($Ereignis=="single_push"){
    SetValueBoolean($AIM,false);}
elseif ($Ereignis=="long_push"){
    SetValueBoolean($AIM,true);}
?> 

Damit bekomme ich dann die Info, ob der Longpush TRUE oder FALSE ist.

Danke dir Kai!!

Der Vollständigkeit halber teile ich hier auch gleich noch den Work-Arround für den Longpush-Boolean beim Shelly i3, da hier ja das Gleiche „Problem“ ist, aber die Variablen leicht anders sind:

Ich erstelle also eine Longpush Variable, mit Aktionsskript. Das Aktionsskript wird bei Änderung des Eingangs-Ereignisses ausgelöst.
Hier das Aktiosskript:

<?php
$Ereignis = 57875;
$Bool     = 32050;

IPS_RunScriptEx(58573,Array("EreignisID" => $Ereignis, "BooleanID" => $Bool));
?>

Hier das i3_Push2Bool Skript:

<?php
$SRC   = $_IPS['EreignisID']; // Source Integer
$AIM   = $_IPS['BooleanID']; // Target Boolean

$Ereignis = GetValueInteger($SRC);

if ($Ereignis==0){ // "shortpush"
    SetValueBoolean($AIM,false);}
elseif ($Ereignis==3){ // "longpush"
    SetValueBoolean($AIM,true);}
?>

Shelly Pro 4PM
Aktuelles Modul (Shelly Beta)

Die Event Variablen werden nun bedient.

Könntest du nicht, wie z.B. beim Shelly 2.5, eine Longpush- und Eingang-Variable pro Kanal hinzufügen?

Wenn’s Anwender gibt, die stöhnen, dass immer zu viel Variablen automatisch angelegt werden, könntest du denen, beim Konfigurieren der Instanz, ja eine Auswahl anbieten.

Gruß
Jörg

Das hat sich mit der neuen API leider etwas geändert, deswegen habe ich das genauso übernommen, die Frage kam gestern auch schon mal.
Ich werde mir das bei Gelegenheit evtl. nochmal anschauen.
Gibt es da eigentlich einen Grund, wieso es so keinen Sinn ergibt?

Grüße,
Kai

Hallo Kai, wie schon berichtet - im Ablaufplan alles kein Problem. Es funktioniert super. Jedoch zickt IPS-View mit den Ablaufplänen noch ein bisschen, da bekomme ich eine Fehlermeldung, wenn ich den Ablaufplan mit der Dimmfunktion ausführen möchte.
Kann man das Dimmen auch mit einem „normalen PHP-Befehl“ bewerkstelligen, sodass ich es in ein normales Script packen kann?

Danke, Werner

Was für eine Fehlermeldung bekommst du?

Grüße,
Kai

Die Fehlermeldung vom Android-Client von IPS-View lautet: „Error during SetValue: Ablaufpläne können noch nicht mit Wait aufgerufen werden“.
IPS-Studio-Version: 5.1
Android-Client: 5.0.41

Habe im Ablaufplan nur eine Dimmzeit von 3000ms auf 40 % eingegeben.

LG. Werner

Hallo, erst nochmal mega DANKE für das Modul!

Läuft auch alles top - hab nur eine Frage zur Vorgehensweise:

Lege ich eine Instanz als Shelly 1 an und konfiguriere diese wie folgt?

image

oder mache ich dass über den MQTT Server:

Mein Problem ist nun, dass die Werte nicht aktualisiert werden, wenn ich den Shelly als Instanz anlege… Wenn ich den Shelly über MQTT Server anlege, werde die Werte aktualisiert:

Habt ihr eine Idee woran das liegen könnte?

Grüße