Support-Thread Modul 36_Shelly.pm

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

Vorheriges Thema - Nächstes Thema

RalfRog

Danke, geholt hatte ich sie (27968) schon...
Bin aber unterwegs  ;)  - denke morgen vormittag oder Nachtschicht
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

Habe das Monitor-Modul am Livesystem aktualisiert in Zusammenarbeit mit dem alten Shelly Modul und per Reload neu gestartet.
Es gab (für mich) erstmal keine Auffälligkeiten bei Shelly1, Plug-S, 1PM & 3EM.

Nach dem löschen der Readings (Shelly1, Plug-S) wurden -interval = 0- am Shelly1 "relay" und am Plug-S "energy, power, relay" neu erzeugt.
Soweit so richtig denke ich  -- da 1PM und 3EM aktiv laufen wollte ich meine Readings nicht löschen (mache ich auf dem Testsystem).

Da in den Internals sich die FVERSION nicht aktualisiert hatte, habe ich dann doch noch einen "shutdown restart" FHEM gemacht. Ergebnisse wie oben und im Log ein paar Warnings (Hinweis aktualisierter Monitor & altes ShellyModul:
2023.09.16 11:03:11.192 0: Server shutdown
2023.09.16 11:03:11.196 2: DbLog DBLogging - stopping SubProcess PID >15080< ...
2023.09.16 11:03:11.209 2: DbLog DBLogging - SubProcess PID >15080< stopped
...
2023.09.16 11:03:14.333 1: Including fhem.cfg
2023.09.16 11:03:22.149 2: DbLog DBLogging - Subprocess >1235< initialized ... ready for non-blocking operation
2023.09.16 11:03:22.275 3: telnetPort: port 7072 opened
2023.09.16 11:03:22.979 3: WEB: port 8083 opened
2023.09.16 11:03:22.993 3: WEBphone: port 8084 opened
2023.09.16 11:03:23.001 3: WEBtablet: port 8085 opened
2023.09.16 11:03:23.926 2: eventTypes: loaded 6400 lines from ./log/eventTypes.txt
...
2023.09.16 11:03:39.028 2: Shelly-Module loaded supports models: shellypro2pm,shelly3em,shellyuni,shelly1pm,shellypro1pm,shellyplus1,shellypro4,shellyem,shelly4,generic,shelly2.5,shellypro4pm,shellyplug,shellybulb,shellyrgbw,shellyplus2pm,shellydimmer,shellyplus1pm,shellypro2,shelly1,shelly2,shellypro1
2023.09.16 11:03:45.623 1: Including ./log/fhem.save
2023.09.16 11:03:46.712 1: Messages collected while initializing FHEM
...
2023.09.16 11:05:01.597 0: Featurelevel: 6.2
2023.09.16 11:05:01.599 0: Server started with 247 defined entities (fhem.pl:27498/2023-04-30 perl:5.032001 os:linux user:fhem pid:1225)
2023.09.16 11:05:04.271 2: Defined real device shelly_1_987654321f for 198.2.3.9 as model generic
2023.09.16 11:05:04.275 1: Assigning device shelly_1_987654321f SHELLYID 987654321F

2023.09.16 11:05:04.277 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/36_ShellyMonitor.pm line 686.
2023.09.16 11:05:04.280 1: PERL WARNING: Use of uninitialized value $model in hash element at ./FHEM/36_ShellyMonitor.pm line 733.
2023.09.16 11:05:04.281 1: PERL WARNING: Use of uninitialized value $no_relais in numeric eq (==) at ./FHEM/36_ShellyMonitor.pm line 734.

2023.09.16 11:05:06.748 2: Defined real device shelly_plug_s_df9876 for 198.2.3.8 as model shelly1pm
2023.09.16 11:05:06.751 1: Assigning device shelly_plug_s_df9876 SHELLYID E653E598656
2023.09.16 11:05:06.820 2: Defined real device shelly_3em_haus for 198.2.3.7 as model shelly3em
2023.09.16 11:05:06.822 1: Assigning device shelly_3em_haus SHELLYID 356DEF63EC5A
2023.09.16 11:05:06.969 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 5018.
...
2023.09.16 11:06:56.291 2: Defined real device shelly_plug_s for 198.2.3.6 as model shellyplug

2023.09.16 11:08:22.078 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/36_ShellyMonitor.pm line 872.
2023.09.16 11:08:22.079 1: PERL WARNING: Use of uninitialized value in hash element at ./FHEM/36_ShellyMonitor.pm line 873.
2023.09.16 11:08:22.080 1: PERL WARNING: Use of uninitialized value in string ne at ./FHEM/36_ShellyMonitor.pm line 873.
2023.09.16 11:08:22.081 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/36_ShellyMonitor.pm line 879.
...
2023.09.16 11:10:26.842 1: PERL WARNING: Use of uninitialized value $net in pattern match (m//) at ./FHEM/36_Shelly.pm line 1654.

Ich probiere es auf dem Testsystem noch mit dem aktuellen Test ShellyModul
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

Hallo Starkstrombastler

Bevor ich die falsche Version verwende. Die letzte Version die ich "finde" ist: my $version = "4.09a 24.08.2023", korrekt?


Gruß Ralf
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

gvzdus

Prüfe bitte, ob bei allen Shelly's model gesetzt ist!
Die Fehler hatte ich mit Geräten, bei denen das nicht der Fall war

RalfRog

Beim Plug-S ist das Model gesetzt gewesen, beim Shelly1 (habe ich über den Monitor definiert, Model fehlte zunächst) bin ich mir nicht mehr sicher ob ich das Model nach dem Reload Monitor (und vor Restart) oder erst nach dem Restart gesetzt habe.

Ich checke es beim Testsystem dann gezielt, warte nur noch auf die Versionsangabe von Starkstrombastler.
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

Zitat von: RalfRog am 16 September 2023, 11:51:00Die letzte Version die ich "finde" ist: my $version = "4.09a 24.08.2023", korrekt?
Ja
IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200

RalfRog

#576
Habe gerade auf dem Testsystem beide Module aktualisiert/geprüft und vor dem FHEM "shutdown restart" gecheckt, dass alle Modelle und Attribut "Intervall = 0" gesetzt sind.
=> ok

  • Nichts Ungewöhnlichews im Log  :)

Nach dem Neustart sind natürlich durch das Modul alle Readings wieder da. Ich habe sie per deletereading gelöscht um zu sehen was der Monitor hochbringt:
ZitatShelly1
relay

Plug-S
energy
power
relay

Shelly 1PM
energy
power
relay

Shelly 3EM
power_0|1|2
energy_0|1|2
energyReturned_0|1|2
relay


Die Werte (s.o.) werden auf den ersten Blick korrekt aktualisiert (nicht gegen den Sniffer geprüft).
Die einzige Auffälligkeit ist, im Monitor stehen die Shellies auf n.s. (not supported)
IP         Name                                 Model   
1.2.3.6    Plug                                 shellyplug, n.s.   
1.2.3.7    S1PM                                 shelly1pm, n.s.   
1.2.3.8    shelly_generic_shem_3_354acb34ec7b   shelly3em, n.s.   
1.2.3.9    shelly_1_47845371a86e                shelly1, n.s.


Edit
Hatte heute Nachmittag den Plug-S und den Shelly1 vom Stromnetz getrennt. Der Shelly1 wurde aus dem Monitor ausgetragen der Plg-S nicht - gibt es unterschiedliche Timeouts?

Log:
2023.09.17 15:30:00.764 1: Device shelly_1_47845371a86e has expired, no messages seen
2023.09.17 15:30:30.430 1: PERL WARNING: Use of uninitialized value $state in concatenation (.) or string at ./FHEM/36_Shelly.pm line 3708.
2023.09.17 15:30:30.432 1: PERL WARNING: Use of uninitialized value $net in concatenation (.) or string at ./FHEM/36_Shelly.pm line 3708.
2023.09.17 15:30:30.434 1: PERL WARNING: Use of uninitialized value $net in pattern match (m//) at ./FHEM/36_Shelly.pm line 3709.


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

gvzdus

So, ich hatte versehentlich das Starkstrombastler-Modul mit der Originalversion überbügelt.
Da ich beim Parsen der Modelle, die "Shelly" unterstützt, auf ein " " vor "model:" prüfte, konnte ich die Liste nicht parsen.
Konsequenzen:
  • Anzeige von "n.s."
  • Model wird beim Anlegen mit "Define"-Button nicht gesetzt
Habe eine neue, korrigierte ShellyMonitor-Version eingecheckt.

gvzdus

@Starkstrombastler: Eine Sache ist nicht so hübsch: Teste bitte mal das Modul, wenn die IP auf ein Gerät zeigt, dass auf Port 80 antwortet, aber kein Shelly ist. Dann wird das Logfile "geflutet".
Der Fall kann auftreten, wenn die IP eines längst vergessenes Shelly-Devices wiederverwendet wird.
2023.09.17 16:43:41 1: [Shelly_get_model] standard decoding: has invalid JSON data for device shelly_button_84cca8ac420f
2023.09.17 16:43:41 1: [Shelly_get_model] device shelly_button_84cca8ac420f has error "relaxed decoding: invalid JSON data, try to call /shelly"
2023.09.17 16:43:41 1: [Shelly_get_model] standard decoding: has invalid JSON data for device shelly_button_84cca8ac420f
2023.09.17 16:43:41 1: [Shelly_get_model] device shelly_button_84cca8ac420f has error "relaxed decoding: invalid JSON data, try to call /shelly"
2023.09.17 16:43:41 1: [Shelly_get_model] standard decoding: has invalid JSON data for device shelly_button_84cca8ac420f
2023.09.17 16:43:41 1: [Shelly_get_model] device shelly_button_84cca8ac420f has error "relaxed decoding: invalid JSON data, try to call /shelly"
2023.09.17 16:43:41 1: [Shelly_get_model] standard decoding: has invalid JSON data for device shelly_button_84cca8ac420f
2023.09.17 16:43:41 1: [Shelly_get_model] device shelly_button_84cca8ac420f has error "relaxed decoding: invalid JSON data, try to call /shelly"
2023.09.17 16:43:41 1: [Shelly_get_model] standard decoding: has invalid JSON data for device shelly_button_84cca8ac420f

gvzdus

Ich habe noch einen Bug:
Mein FHEM-System ist gerade mit folgender Meldung gecrasht:

Can't take sqrt of -45.5724 at ./FHEM/36_Shelly.pm line 2746.
Die Zeile lautet so:

$reactivePower = sprintf("%4.1f",sqrt( ($apparentPower * $apparentPower) - ($power * $power) ))    if($apparentPower>$power);

Die if-Bedingung am Ende sollte eigentlich sicherstellen, dass der Wert zum Wurzelziehen niemals negativ werden kann. Kann er aber doch: Nämlich, wenn die Werte negativ sind :-), und apparentPower nicht so negativ wie power :-)

Das solltest Du fixen, z.B. so:

              my $v =  ($apparentPower * $apparentPower) - ($power * $power);
              $reactivePower = sprintf("%4.1f",sqrt( $v ))    if($v>0);

Ansonsten: Habe heute einen Shelly EM (das Gen1-Gerät, um 1-2 Kanäle zu messen) bekommen. Dafür wird es noch eine Anpassung an ShellyMonitor geben, damit das Gerät automatisch erkannt wird.

Starkstrombastler

Die Physik des Wechselstroms hat so seine Tücken...
Zitat von: gvzdus am 18 September 2023, 13:28:33$reactivePower = sprintf("%4.1f",sqrt( $v ))    if($v>0);
Der Blindstrom wird bei negativem Wurzeloperanten negativ, daher sollte Folgendes zutreffender sein:
my $v = ($apparentPower * $apparentPower) - ($power * $power);
$reactivePower = sprintf("%4.1f",($v<=>0)*sqrt( abs($v) ));

IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200

gvzdus

Mir doch alles wurscht: Blind-, Schein-, Wirkleistung. Hauptsache, FHEM kachelt nicht :-)

bene80

Hallo

habe gerade einen ShellyPlus i4 integriert.
Das Attribut webhooks scheint nicht zu funktionieren

Internals:
   CFGFN     
   CMD        Create
   DEF        192.168.0.78
   FUUID      650c1b07-f33f-547c-ce95-1717fde51d0f759b
   INTERVAL   60
   NAME       shelly_Kizi_i4
   NR         132437
   SHELLY     SNSN-0024X
   SHELLYID   shellyplusi4-90380c35e5e4
   STATE      OK
   TCPIP      192.168.0.78
   TYPE       Shelly
   eventCount 101
   units      0
   READINGS:
     2023-09-21 12:29:43   cloud           disabled
     2023-09-21 12:29:43   firmware        v1.0.3
     2023-09-21 12:29:41   input_0         unknown
     2023-09-21 12:29:43   input_0_mode    button straight
     2023-09-21 12:29:41   input_1         unknown
     2023-09-21 12:29:43   input_1_mode    button straight
     2023-09-21 12:29:41   input_2         unknown
     2023-09-21 12:29:43   input_2_mode    button straight
     2023-09-21 12:29:41   input_3         unknown
     2023-09-21 12:29:43   input_3_mode    button straight
     2023-09-21 12:29:43   network         <html>connected to <a href="http://192.168.0.78">192.168.0.78</a> (Wifi)</html>
     2023-09-21 14:15:17   network_rssi    -46
     2023-09-21 12:29:43   network_ssid    ddwrt
     2023-09-21 13:42:17   state           OK
     2023-09-21 13:48:17   webhook_cnt     1
     2023-09-21 14:11:17   webhook_ver     29
   helper:
     a_Active_Power 0
     b_Active_Power 0
     c_Active_Power 0
     power      0
     powerCnt   1
Attributes:
   ShellyName shelly_Kizi_i4
   model      shellyplusi4
   room       10 System
   verbose    5
   webhook    WEB

Ich habe jetzt eines manuell mit dem Namen _button.zu_ angelegt

http://192.168.0.3:8088/fhem?XHR=1&cmd=set%20shelly_Rollo_KiZi%20closed%20
Wenn ich jetzt den Button am i4 betätige, wird der Befehl dann ca. alle 16s genau 4mal ausgeführt.

Starkstrombastler

Zitat von: bene80 am 21 September 2023, 14:32:22Das Attribut webhooks scheint nicht zu funktionieren
Danke für den Hinweis. Im Modul (Version 4.09a) muss in Zeile 3893 wie folgt geändert werden:
my $subs= $compCount>1 ? "_$c\_mode" : "_mode" ;Wird im nächsten Update berücksichtigt.

Zitat von: bene80 am 21 September 2023, 14:32:22Ich habe jetzt eines manuell mit dem Namen _button.zu_ angelegt
Das geht natürlich auch. Allerdings sollte der Name der selbst erstellten Action nicht mit einem Unterstrich anfangen. Wenn das Attribut webhook gelöscht oder der Wert auf 'none' geändert wird, werden alle Actions, deren Namen mit Unterstrich beginnen, vom Shelly entfernt. --> Action auf dem Shelly umbenennen.

Zitat von: bene80 am 21 September 2023, 14:32:22http://192.168.0.3:8088/fhem?XHR=1&cmd=set%20shelly_Rollo_KiZi%20closed%20
Dieser Webhook geht gewissermaßen am Shelly-Modul vorbei, da ja der set-Befehl direkt an den Rollo-Shelly gerichtet ist. Das beschriebene Verhalten hat also nichts mit dem Shelly-Modul zu tun. 

Der via Attribut webhook angelegte webhook würde in deinem Fall in etwa so aussehen (Taster am Eingang 1, entspricht Kanal=0):
http://192.168.0.3:8088/fhem?XHR=1&cmd=set%20shelly_KiZi_i4%20single_push%200 Diesen Webhook kannst du am Shelly mit +AddURL hinzufügen, um zu sehen was am i4 passiert.


IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200

bene80

Das geht natürlich auch. Allerdings sollte der Name der selbst erstellten Action nicht mit einem Unterstrich anfangen. Wenn das Attribut webhook gelöscht oder der Wert auf 'none' geändert wird, werden alle Actions, deren Namen mit Unterstrich beginnen, vom Shelly entfernt. --> Action auf dem Shelly umbenennen.
Oha, vielen Dank für den Hinweis, das werden ich noch ändern

http://192.168.0.3:8088/fhem?XHR=1&cmd=set%20shelly_KiZi_i4%20single_push%200
Hmm, verstehe einen eingehenden Befehl vom i4 müsste ich dann noch in FHEM mit dem Rollo verbinden, so sollte es funktionieren.

Ich finde es trotzdem ein wenig komisch, ich habe auch einen Shelly Button 2 der funktioniert genau so wie von mir oben beschrieben. Der Webhook geht ja trotzdem an einen shelly, also wieder ins Modul rein. Muss ich mir noch einmal anschauen