Entwicklungs-Thread Modul 36_Shelly.pm

Begonnen von Starkstrombastler, 24 Februar 2024, 12:15:05

Vorheriges Thema - Nächstes Thema

Starkstrombastler

Zitat von: caldir65 am 29 September 2024, 14:14:51ich habe einen ShellyPlus1 mit Addon. Daran angeschlossen ist ein Reedkontakt. Wenn ich jetzt einen Magnet entsprechend anlege, kann ich in der Oberfläche vom Shelly eine Reaktion sehen, jedoch kommt davon nichts in fhem an.
Das Addon ist ja bereits integriert, aber offensichtlich passt da noch nicht alles. Schaue ich mir an, damit auch das funktioniert.
IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200

caldir65

Moin,

das hört sich gut an. Übrigens kommt ein am analogen Eingang des Addon wie folgt:

ble {}
cloud
connected false
input:0
id 0
state false
input:100
id 100
percent 0
mqtt
connected false
switch:0
id 0
source "init"
output false
temperature
tC 65.3
tF 149.6
sys
mac "441793A58A54"
restart_required false
time "20:19"
unixtime 1727720370
uptime 99158
ram_size 253952
ram_free 140680
fs_size 393216
fs_free 110592
cfg_rev 6
kvs_rev 0
schedule_rev 0
webhook_rev 0
available_updates {}
reset_reason 3
wifi
sta_ip "192.168.1.164"
status "got ip"
ssid "Caldir_MacAran_IoT"
rssi -57
ws
connected false

Da variiert dann nur die Ausgabe der "percent" (0 = keine Bewegung)

Gruß
Christoph
Alte Techniker-Regel: "kaum macht man es richtig, funktioniert es auch"
------
Dell Wyse5070 ThinClient 16GBRam, 64GB SSD, Lubuntu 22.04LTS, fhem (aktuell), debmatic, Homematic-Devs, ConBee II und deConz, viele Shellys, Rademacher, NextCloud-Anbindung, FullyKioskBrowser+FUIP uvm.

Starkstrombastler

Zitat von: caldir65 am 29 September 2024, 14:14:51Ich habe einen ShellyPlus1 mit Addon. Daran angeschlossen ist ein Reedkontakt. Wenn ich jetzt einen Magnet entsprechend anlege, kann ich in der Oberfläche vom Shelly eine Reaktion sehen, jedoch kommt davon nichts in fhem an.
Zitat von: caldir65 am 29 September 2024, 14:14:51setstate ShellyPlus1_Schlafzimmer 2024-09-29 14:07:34 input_1 on
setstate ShellyPlus1_Schlafzimmer 2024-09-29 13:57:30 input_1_mode switch straight enabled

Das Shelly-Modul scheint aber korrekt zu arbeiten, das Reading input_1 wird mit Wert on dargestellt.
Es gilt dabei zu beachten, dass die Readings entsprechend dem Polling-Intervall gesetzt werden.

Sollen kurzzeitige Änderungen am Eingang erfasst werden, so sollte auf dem Shelly eine entsprechende Action angelegt werden.
Die URL für die Action "Input toggled on" sollte so aussehen (die Leerzeichen sind durch %20 zu ersetzen):
http://192.168.1.147:8083/fhem?cmd=set Y174 input_on 1

Zu beachten ist, dass auf dem Shelly die Inputs des AddOn von 100 an aufwärts gezählt werden, im Fhem-Modul dagegen wird die Zählung nach den regulären Inputs fortgesetzt. Für den Shelly Plus 1 gilt also:
input:0     -->  input  bzw.  input_0   *)
input:100   -->  input_1

*) Das Modul wird noch korrigiert, mit dem Addon muss das Reading des 'regulären' Eingangs input_0 heißen.
IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200

Starkstrombastler

Hier wie versprochen die Weiterentwicklung des Moduls als Testversion 6.01 Beta1:

Du darfst diesen Dateianhang nicht ansehen.

Überarbeitet wurde das Polling, insbesondere im Zusammenhang mit zeitbasierten Befehlen (z.B. on-for-timer) und Rollofahrzeiten, um die möglichst zeitnahen Events nach Start bzw. Abschluss des Vorgangs zu verbessern. Sendet der Shelly zu einem Vorgang eine URL (via Action) so erfolgt eine Priorisierung um doppelte Abfragen des Status zu vermeiden: Ist bereits eine Status-Abfrage an den Shelly abgeschickt, aber noch nicht beantwortet, so wird keine weitere Abfrage ausgelöst. 
Ist der Zeitbasierte Befehl (oder die Rollofahrzeit) länger als das Polling-Interval, so werden Zwischenwerte abgerufen.

Die Version enthält Bug-Fixes zu den zuletzt diskutierten Problemfällen und einige Änderungen, die wichtigsten sind:
  • Das Reading firmware wird ersetzt durch drei Readings: firmware_current, firmware_updText und firmware_updIcon. Das wird in der ReadingsGroup (s.u.) für eine farbliche Hervorhebung des Firmwarestandes genutzt. 
  • Für die Shellies Gen2 mit Relais werden die Readings auto_on, auto_off ausgewiesen.
  • Für die Darstellung der Netzwerkverbindung werden neue Reading network_connection, network_host ausgewiesen. Letzeres ist insbesondere dann interessant, wenn der Shelly mit dem AP eines anderen Shelly verbunden ist.
  • Der Name des Access Points wird jetzt im Reading ap_name ausgewiesen.
  • Für die Recherche bei Netzwerkproblemen kann das Attribut timeout gesetzt werden, wodurch Readings mit den Reaktionszeiten zu den diversen Abfragen gesetzt werden. Mit dem Löschen des Attributes werden auch diese Readings entfernt. 

Mit dem neuen Befehl get <name> readingsGroup Device|Network|Firmware|Status lassen sich diverse Readings-Group-Devices erstellen, in denen alle Shelly-Definitionen thematisch zusammengefasst werden.
IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200

caldir65

Moin,

sieht erstmal gut aus, ich habe bisher keine Auffälligkeiten ... muß nur noch die alten Readings mal beseitigen ...

Gruß, Christoph
Alte Techniker-Regel: "kaum macht man es richtig, funktioniert es auch"
------
Dell Wyse5070 ThinClient 16GBRam, 64GB SSD, Lubuntu 22.04LTS, fhem (aktuell), debmatic, Homematic-Devs, ConBee II und deConz, viele Shellys, Rademacher, NextCloud-Anbindung, FullyKioskBrowser+FUIP uvm.

sfh

Zitat von: Starkstrombastler am 12 Oktober 2024, 19:29:42Hier wie versprochen die Weiterentwicklung des Moduls als Testversion 6.01 Beta1:
[...]
Hallo,
das sieht richtig gut aus. Jetzt werden im Rollladen-Betrieb bei Gen1- und Gen2-Shellies die End- und Zwischenstellungen korrekt und ohne sichtbare Zeitverzögerung angezeigt. Das funktioniert auch, wenn man die Rollläden über die Tastereingänge am Aktor bedient. Gute Arbeit, vielen Dank!

caldir65

Zitat von: Starkstrombastler am 04 Oktober 2024, 10:43:53
Zitat von: caldir65 am 29 September 2024, 14:14:51Ich habe einen ShellyPlus1 mit Addon. Daran angeschlossen ist ein Reedkontakt. Wenn ich jetzt einen Magnet entsprechend anlege, kann ich in der Oberfläche vom Shelly eine Reaktion sehen, jedoch kommt davon nichts in fhem an.
Zitat von: caldir65 am 29 September 2024, 14:14:51setstate ShellyPlus1_Schlafzimmer 2024-09-29 14:07:34 input_1 on
setstate ShellyPlus1_Schlafzimmer 2024-09-29 13:57:30 input_1_mode switch straight enabled

Das Shelly-Modul scheint aber korrekt zu arbeiten, das Reading input_1 wird mit Wert on dargestellt.
Es gilt dabei zu beachten, dass die Readings entsprechend dem Polling-Intervall gesetzt werden.

Sollen kurzzeitige Änderungen am Eingang erfasst werden, so sollte auf dem Shelly eine entsprechende Action angelegt werden.
Die URL für die Action "Input toggled on" sollte so aussehen (die Leerzeichen sind durch %20 zu ersetzen):
http://192.168.1.147:8083/fhem?cmd=set Y174 input_on 1

Zu beachten ist, dass auf dem Shelly die Inputs des AddOn von 100 an aufwärts gezählt werden, im Fhem-Modul dagegen wird die Zählung nach den regulären Inputs fortgesetzt. Für den Shelly Plus 1 gilt also:
input:0     -->  input  bzw.  input_0   *)
input:100   -->  input_1

*) Das Modul wird noch korrigiert, mit dem Addon muss das Reading des 'regulären' Eingangs input_0 heißen.
http://192.168.1.186:8083/fhem?cmd=set%20ShellyPlus1_Schlafzimmer%20input_on%201[/code]
aber leider kommt nichts an im Device - es ändert sich erst im Rahmen des Pollings ...
Die Fhem-Webui erreiche ich über https:// - muß ich jetzt noch etwas diesbezüglich berücksichtigen?

Gruß, Christoph
Alte Techniker-Regel: "kaum macht man es richtig, funktioniert es auch"
------
Dell Wyse5070 ThinClient 16GBRam, 64GB SSD, Lubuntu 22.04LTS, fhem (aktuell), debmatic, Homematic-Devs, ConBee II und deConz, viele Shellys, Rademacher, NextCloud-Anbindung, FullyKioskBrowser+FUIP uvm.

Starkstrombastler

Zitat von: caldir65 am 13 Oktober 2024, 14:39:52Die Fhem-Webui erreiche ich über https://
Das erklärt alles (ist die Info neu oder hatte ich das übersehen) !

Sofern sich dein FHEM-Server und der Shelly im gleichen (abgesichertem) Netzwerk befinden, ist die einfachste Lösung die Verwendung einer eigenen FHEMweb Instanz und Absicherung mit einem allowed-Device. Im Detail:
  • Definition der FHEMweb-Instanz z.B.:  defmod HOOK FHEMWEB 8084 global
  • Definition eines Allowed-Devices und Setzen der Attribute validFor allowedDevices allowedCommands, siehe Commandref
  • Sicherstellen, dass der Name der Action auf dem Shelly mit einem _ (Unterstrich) beginnt. Dies ist Voraussetzung für die automatische Änderung im nächsten Schritt
  • Ändern des Attributes webhook im Shelly-Device auf den neuen Namen. FHEM wird die vom Modul angelegten Actions auf dem Shelly auf den neuen Webhook anpassen und auch den CSFR-Token in der URL ergänzen
  • Option: Kontrolle der geänderten Actions mit get <name> actions

Ich hoffe, ich habe da nichts vergessen...
IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200