Support-Thread Modul 36_Shelly.pm

Begonnen von Prof. Dr. Peter Henning, 03 Februar 2021, 08:03:09

Vorheriges Thema - Nächstes Thema

RalfRog

#360
Zitat von: RalfRog am 05 Mai 2023, 17:42:48..
wenn du einen Tipp hast bau ich gern ne Zeile "Debug/Log" in den Code. Z.B. zur Ausgabe des rohen Rückgabewertes aus /settings

Selbstversuch:
486     $json = JSON->new->utf8;
 487 Debug $json;
 488 Debug $data;
 489     $jhash = eval{ $json->decode( $data ) };
 490 Debug $jhash;
 491     if( !$jhash ){

Ergebnis:
2023.05.05 17:53:00.533 5: [Shelly_get_model] Shelly_Plug: received 1778 byte of data from device
2023.05.05 17:53:00.536 1: DEBUG>JSON=SCALAR(0x37fe2d0)
die Daten: 2023.05.05 17:53:00.540 1: DEBUG>{"device":{"type":"SHPLG-S","mac":"aabbcc112233","hostname":"shellyplug-s-DF2674","num_outputs":1,"num_meters":1},"wifi_ap":{"enabled":false,"ssid":"shellyplug-s-DF2674","key":""},"wifi_sta":{"enabled":true,"ssid":"WLAN","ipv4_method":"dhcp","ip":null,"gw":null,"mask":null,"dns":null},"wifi_sta1":{"enabled":false,"ssid":null,"ipv4_method":"dhcp","ip":null,"gw":null,"mask":null,"dns":null},"ap_roaming":{"enabled":false,"threshold":-70},"mqtt": {"enable":false,"server":"11.12.13.99:1883","user":"","id":"shellyplug-s-DF2674","reconnect_timeout_max":60.000000,"reconnect_timeout_min":2.000000,"clean_session":false,"keep_alive":60,"max_qos":0,"retain":true,"update_period":30},"coiot": {"enabled":true,"update_period":300,"peer":""},"sntp":{"server":"11.12.13.1","enabled":true},"login":{"enabled":false,"unprotected":false,"username":"user"},"pin_code":"","name":"Solar_Plug","fw":"20210323-105718/v1.10.1-gf276b51","discoverable":false,"build_info":{"build_id":"20210323-105718/v1.10.1-gf276b51","build_timestamp":"2021-03-23T10:57:18Z","build_version":"1.0"},"cloud":{"enabled":false,"connected":false},"timezone":"Europe/Berlin","lat":50.986938,"lng":6.890820,"tzautodetect":false,"tz_utc_offset":7200,"tz_dst":true,"tz_dst_auto":false,"time":"16:53","unixtime":1683301981,"led_status_disable":true,"debug_enable":false,"allow_cross_origin":false,"actions":{"active":false,"names":["btn_on_url","out_on_url","out_off_url"]},"hwinfo":{"hw_revision":"prod-190516","batch_id":1},"max_power":500,"led_status_disable":true,"led_power_disable":true,"relays":[{"name":null,"appliance_type":"General","ison":true,"has_timer":false,"default_state":"on","auto_on":0.00,"auto_off":0.00,"schedule":false,"schedule_rules":[],"max_power":500}],"wifirecovery_reboot_enabled":false}
2023.05.05 17:53:00.546 1: PERL WARNING: Use of uninitialized value $msg in concatenation (.) or string at fhem.pl line 5563.
2023.05.05 17:53:00.549 1: DEBUG>
2023.05.05 17:53:00.552 5: [Shelly_get_model] has invalid JSON data for device Shelly_Plug

Sieht der Rückgabewert anders aus als bei dir? Unerlaubte sonderzeichen?
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

Starkstrombastler

Der Rückgabewert sieht doch unauffällig aus.

Wie reagiert eigentlich die offizielle Modul-Fassung?

Zitat von: RalfRog am 05 Mai 2023, 14:10:542023-05-05 13:33:11 firmware v1.10.1
Vielleicht hilft ein Firmware-Update, aktuelle Version für den ShellyPlug ist v1.13.0
IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200

RalfRog

#362
Hallo

Habe auf dem Livesystem (da läuft 4.02f) mal nach dem letzten Restart gesucht und tatsächlich:
  "Shelly_configure] invalid JSON data"
Das ist mir bisher nicht aufgefallen, da die Readings korrekt gesetzt werden und man da ja noch das Modell setzen musste.
2023.04.29 15:39:37.097 2: Defined real device shelly_3em_haus for 10.20.30.92 as model shelly3em
2023.04.29 15:39:37.102 1: Assigning device shelly_3em_haus SHELLYID 244CAB42CE6B
...
2023.04.29 15:39:38.911 1: [Shelly_configure] invalid JSON data for device shelly_plug_s_df2674
2023.04.29 15:39:39.062 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5015.
...
2023.04.29 15:39:42.754 2: Defined real device shelly_plug_s_df2674 for 10.20.30.90 as model shellyplug
2023.04.29 15:39:42.756 1: Assigning device shelly_plug_s_df2674 SHELLYID DF2674


Zitat von: Starkstrombastler am 05 Mai 2023, 19:35:18Vielleicht hilft ein Firmware-Update, aktuelle Version für den ShellyPlug ist v1.13.0
Solange alles funktioniert, bin ich bei den Shelly's vorsichtig mit Updates. Im Shelly-Forum werden ja oft recht viele Probleme nach Updates beschrieben. Oder es fallen Funktionen weg/verändert wie beim 3EM von 1.11 nach 1.12 mit der internen Datenspeicherung der Energy.


Vielleicht hast Du eine Idee dem Problem auf die Spur zu kommen. Mein Perl ist da doch sehr rudimentär.
Es scheint sich ja in der Zeile "$jhash = eval{ $json->decode( $data ) };" zu äußern. Wenn es korrekt läuft kommt für $jhash eine Hash-Referenz zurück und im Fehlerfall ist es "Leer" oder "Null".

2023.05.05 17:53:00.536 1: DEBUG>JSON=SCALAR(0x37fe2d0)
2023.05.05 17:53:00.540 1: DEBUG>{"device":{"type":"SHPLG-S", ...
   hier wird jetzt Zeile $jhash = eval{ $json->decode( $data ) }; ausgeführt
2023.05.05 17:53:00.546 1: PERL WARNING: Use of uninitialized value $msg in concatenation (.) or string at fhem.pl line 5563.
2023.05.05 17:53:00.549 1: DEBUG>

Der 1PM funktioniert übrigens gut  :D (FW 1.10.1, vorhin mal defniert) und liefert:
2023.05.05 18:33:42.341 1: DEBUG>JSON=SCALAR(0x3b7fa90)
2023.05.05 18:33:42.345 1: DEBUG>{"device":{"type":"SHSW-PM","...
   hier wird jetzt Zeile $jhash = eval{ $json->decode( $data ) }; ausgeführt
2023.05.05 18:33:42.351 1: DEBUG>HASH(0x3b9d190)

Nochmal meine Debugs im Code:
486     $json = JSON->new->utf8;
 487 Debug $json;
 488 Debug $data;
 489     $jhash = eval{ $json->decode( $data ) };
 490 Debug $jhash;
 491     if( !$jhash ){
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

RalfRog

#363
Hallo Starkstrombastler
Bin durch Extra-Debug und -Dumper Zeilen auf etwas gestoßen und habe in Code-Zeile #486 mal testhalber
"$json = JSON->new->utf8->relaxed;" gesetzt.
Damit wird mein Plug S erkannt.

Um das hier nicht zu unübersichtlich zu machen, werde ich einen neuen Beitrag aufmachen.
Stelle dort mal meine Erkenntnisse zusammen - die ich aber leider im Detail nicht richtig einordnen kann.

Gruß Ralf

Edit: "hier kommt der Link auf den neuen Beitrag hin"   https://forum.fhem.de/index.php?msg=1274940
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

Starkstrombastler

#364
Die bisherigen Erkenntnisse aus den Tests von RalfRog sind in dieser neuen Fassung berücksichtigt: 

Für die Problematik der Autoerkennung ist das Logging etwas ausführlicher, die Diskussion dazu aber bitte im separaten Thread (s.o.) führen. 

Rückmeldungen wie immer gerne gesehen, da ich aber die nächsten Tage auf Reisen bin, muss ich entsprechend um etwas Geduld bitten.
IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200

RalfRog

Hallo habe die Version 4.04e installiert und meine drei Shelly's installiert
  Plug S
  1PM
  3EM

Alles schick!
2023.05.06 18:27:02.097 1: [Shelly_get_model] standard decoding: has invalid JSON data for device Shelly_Plug
2023.05.06 18:27:02.102 1: [Shelly_get_model] decoded JSON with relaxed decoding for device Shelly_Plug
2023.05.06 18:27:02.105 1: [Shelly_get_model] discovered model=shellyplug for device Shelly_Plug
2023.05.06 18:28:07.062 1: [Shelly_get_model] discovered model=shelly1pm for device S1PM
2023.05.06 18:28:40.513 1: [Shelly_get_model] discovered model=shelly3em for device S3EM

Wunsch:
Rename von "returnedTTL" zu "energy_returnedTTL", dann steht es beisammen und ist leichter zu efassen.


Auch der Test vom Plug S & EM in Verbindung mit dem ShellyMonitor sieht gut aus.
Die Reading die dort hinterlegt sind (fest codiert) werden per CoIot aktualisiert.
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

Xaneu

#366
Hallo Starkstrombastler,

'habe nun die letzte Testversion ,,4.04e" auf meinen kleinen Shelly-Mini-Zoo losgelassen:

Shelly Plus 1
Shelly 2.5
Shelly Plug S
Shelly Plus 2PM
(Shelly Plus i4)

Der Fehler, dass das beim Shelly Plus 2PM gesetzte Attribute ,,showunits original", direkt auf alle Shelly-Geräte wirkte, ist behoben.

Alle angeschlossenene Shelly-Geräte bis auf den Shelly Plus i4 laufen einwandfrei. Allerdings hatten meine Tests nicht den Tiefgang wie die von RalfRog.
Da es keine Auffälligkeiten gab, habe ich nun die Testversion ,,4.04e" direkt auf meinem System belassen.

Zum Shelly Plus i4:

Beim Stöbern im Quelltext hatte ich entdeckt, dass auch der Shelly Plus i4, den ich bisher über MQTT auslese, unterstützt wird.
Ich hätte das nun gerne getestet, mit dem Ziel dann alle Shelly-Geräte über das Modul "36_Shelly.pm" betreiben zu können.
Leider konnte ich, nach dem Deaktivieren des MQTT-Protokolls über die Shelly-Weboberfläche und anschließendem Reboot, auf den Shelly Plus i4 nicht mehr zugreifen.
Auch ließ sich das Geräte nicht mehr auf Werkseinstellung zurücksetzten (Shelly stromlos schalten und wieder einschalten und dann innerhlab einer Minute 5x einen Eingang betätigen).

Xaneu
FHEM 6.1 @ RPi4, raspbian (buster) auf USB-SSD, PIUSV+, HM-MOD-RPI-PCB und viele Homematic-Komponenten, OBIS, vclient, VBUS, Modbus, E3DC-Photovoltaikumrichter, 1-wire, Shelly und eigene Module

Machen ist wie wollen, nur krasser!

mkriegl

Ich biete mich auch gerne zum Testen an. Habe mir folgendes geholt:

Shelly Plus 2PM (Doppelsteckdose)
Shelly Plus 1PM (Steckdose)
Shelly Plus Plug S (einzelne Geräte)

am Wochenende sollen noch folgen:
Shelly Plus 2PM (Doppellichtschalter)
Shelly Plus 1PM (Einzellichtschalter)
Shelly Plus i4 (Szenenauswahl)

Gruß .. Max

THZ_Haus

Hallo, bei mir wird nach einem Neustart jedes Shelly device als Model "Generic" erkannt.
Dies hat zur folge das es nicht immer richtig funktioniert (Shelly Bulp), gehen dann die Farben nicht usw.

Stelle ich das Modell dann manuell richtig ein, klappt alles. Nun werden die einstellungen nach einem Neustart wieder zurück auf "generic" gesetzt
ist da irgendwie ab zu schalten?

Solarview mit SAM BT, FHEM mit THZ 403 SOL, EDIMAX

RalfRog

Zitat von: THZ_Haus am 12 Mai 2023, 22:21:03Stelle ich das Modell dann manuell richtig ein, klappt alles. Nun werden die einstellungen nach einem Neustart wieder zurück auf "generic" gesetzt
ist da irgendwie ab zu schalten?
Neustart des/der Shelly's oder FHEM?
Im Falle FHEM: hast du vielleicht vergessen "save config" zu machen?
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

THZ_Haus

Moin,
habe jetzt nochmal getestet, wenn ich von "generic" auf "shellybulb" umstelle, wird dies nicht gespeichert.
Die anderen Shellys sind okay!
MfG
Solarview mit SAM BT, FHEM mit THZ 403 SOL, EDIMAX

RalfRog

Ich habe zwar keine ShellyBulb.
Aber umgekehrt habe ich einfach mal den ShellyPlugS auf "shellybulb" eingestellt die Config gespeichert und ein "shutdown restart" durchgeführt.

Das Attribut  geht dann tatsächlich wieder auf "model=shellyplug". Vermutlich liegt das an der Art wie Starkstrombastler die Deviceerkennung umgesetzt hat und daher die nicht erkannte "shellybulb" wieder auf "generic" geht.

@Starkstrombastler:

Im log ist nach dem Restart und vorheriger Definition meines Plug als shellybulb:
2023.05.13 09:05:04.846 1: [Shelly_get_model] standard decoding: has invalid JSON data for device Shelly_Plug
2023.05.13 09:05:04.851 1: [Shelly_get_model] decoded JSON with relaxed decoding for device Shelly_Plug
2023.05.13 09:05:04.852 1: [Shelly_get_model] discovered model=shellyplug for device Shelly_Plug
2023.05.13 09:07:52.739 2: Defined real device Shelly_Plug for 11.12.13.19 as model shellyplug
2023.05.13 09:07:52.742 1: Assigning device Shelly_Plug SHELLYID DF2674

FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

Lichti

#372
ich habe einen neuen Shelly Uni.
Die Temperatur wird in den Readings angezeigt.
Die gemessene Spannung vom ADC und der Status der Sensor-Eingänge fehlen aber.

Starkstrombastler

Zitat von: THZ_Haus am 12 Mai 2023, 22:21:03Hallo, bei mir wird nach einem Neustart jedes Shelly device als Model "Generic" erkannt.
Als "generic" werden die Shellies angelegt, wenn sie
a) eine unbekannte Type sind
b) nicht vom Shelly-Modul unterstützt werden (z.B. Batterie-Geräte oder TRV)
c) die Kommunikation fehlerhaft ist (z.B. wg. alter Firmware).

zu a) wie lautet denn bei den auffälligen Shellies das Internal 'SHELLY' ? Falls das nicht vorhanden ist, bitte über den Browser folgende Anfrage absetzen:  <ip-adresse_des_Shelly>/settings
Die Antwort des Shelly unter device:type:  hier posten (z.B. "SHBLB-1").
IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200

Starkstrombastler

Zitat von: Xaneu am 08 Mai 2023, 23:08:22Beim Stöbern im Quelltext hatte ich entdeckt, dass auch der Shelly Plus i4, den ich bisher über MQTT auslese, unterstützt wird.
Der Shelly i4 wird derzeit nicht wirklich unterstützt. Er wird als Model=generic angelegt, was aber bei den Geräten der 2. Generation nichts bringt, weil diese nicht vom Shelly-Monitor unterstützt werden.  Die Unterstützung vom Shelly-Modul ist aber in Arbeit.

Ist die Kommunikation mit dem i4 inzwischen wieder hergestellt?
IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200