Neues Modul für das PHC-Bussystem von Peha

Begonnen von StefanStrobel, 23 April 2017, 21:18:08

Vorheriges Thema - Nächstes Thema

mcp

Hi Stefan,

Zitat von: StefanStrobel am 14 Juni 2020, 19:48:49
ich vermute die Meldungen kommen aus Deinem Code. Schau doch mal ob Du ein DoIF, Notify o.ä. verwendest, bei dem ein Vergleich mit == drin ist. Wenn dann die Variable keinen numerischen Inhalt hat, kommt so eine Meldung.
So Leid es mir tut aber die Fehler sind in deinem Modul :)


2020.06.14 16:13:40 1: PERL WARNING: Argument "Ein" isn't numeric in numeric eq (==) at (eval 558240) line 1.
2020.06.14 16:13:41 1: PERL WARNING: Argument "Aus" isn't numeric in numeric eq (==) at (eval 558244) line 1.
2020.06.14 16:14:10 1: PERL WARNING: Argument "Ein" isn't numeric in numeric eq (==) at (eval 558326) line 1.
2020.06.14 16:14:14 1: PERL WARNING: Argument "Aus" isn't numeric in numeric eq (==) at (eval 558336) line 1.
2020.06.14 16:24:06 1: PERL WARNING: Argument "Ein" isn't numeric in numeric eq (==) at (eval 559945) line 1.
2020.06.14 16:24:28 1: PERL WARNING: Argument "Aus" isn't numeric in numeric eq (==) at (eval 560027) line 1.
2020.06.14 16:24:48 1: PERL WARNING: Argument "Ein" isn't numeric in numeric eq (==) at (eval 560104) line 1.
2020.06.14 16:24:52 1: PERL WARNING: Argument "Aus" isn't numeric in numeric eq (==) at (eval 560109) line 1.
2020.06.14 16:30:22 1: PERL WARNING: Argument "Ein" isn't numeric in numeric eq (==) at (eval 560995) line 1.
2020.06.14 16:30:25 1: PERL WARNING: Argument "Aus" isn't numeric in numeric eq (==) at (eval 561000) line 1.
2020.06.14 19:12:26 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 55596) line 1.
2020.06.14 19:12:26 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 55598) line 1.
2020.06.14 19:12:31 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 55644) line 1.
2020.06.14 19:12:36 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 55649) line 1.
2020.06.14 19:12:37 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 55653) line 1.
2020.06.14 19:12:38 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 55657) line 1.
2020.06.14 19:12:39 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 55661) line 1.
2020.06.14 19:12:39 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 55665) line 1.
2020.06.14 19:12:40 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 55669) line 1.
2020.06.14 19:12:40 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 55673) line 1.
2020.06.14 19:12:40 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 55677) line 1.
2020.06.14 19:12:40 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 55681) line 1.
2020.06.14 19:12:40 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 55685) line 1.
2020.06.14 19:12:40 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 55689) line 1.
2020.06.14 19:12:41 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 55693) line 1.
2020.06.14 19:12:41 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 55697) line 1.
2020.06.14 19:12:41 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 55701) line 1.
2020.06.14 19:12:41 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 55705) line 1.
2020.06.14 19:12:42 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 55709) line 1.
2020.06.14 19:12:42 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 55713) line 1.
2020.06.14 19:12:42 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 55717) line 1.
2020.06.14 19:12:42 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 55721) line 1.
2020.06.14 19:12:42 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 55725) line 1.
2020.06.14 19:12:43 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 55729) line 1.
2020.06.14 19:12:43 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 55733) line 1.
2020.06.14 19:12:43 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 55737) line 1.
2020.06.14 19:12:43 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 55741) line 1.
2020.06.14 19:12:43 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 55745) line 1.
2020.06.14 19:12:44 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 55749) line 1.
2020.06.14 19:12:44 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 55753) line 1.
2020.06.14 19:14:37 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 56092) line 1.
2020.06.14 19:14:42 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 56096) line 1.
2020.06.14 19:14:46 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 56100) line 1.
2020.06.14 19:14:49 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 56104) line 1.
2020.06.14 19:14:50 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 56108) line 1.
2020.06.14 19:15:34 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 56301) line 1.
2020.06.14 19:15:48 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 56308) line 1.
2020.06.14 19:16:24 1: PERL WARNING: Argument "Dimmen Gegenrichtung" isn't numeric in numeric eq (==) at (eval 56402) line 1.
2020.06.14 19:16:36 1: PERL WARNING: Argument "Dimmen Gegenrichtung" isn't numeric in numeric eq (==) at (eval 56479) line 1.
2020.06.14 19:16:46 1: PERL WARNING: Argument "Ein Max ohne Memory" isn't numeric in numeric eq (==) at (eval 56487) line 1.
2020.06.14 19:16:57 1: PERL WARNING: Argument "Aus" isn't numeric in numeric eq (==) at (eval 56535) line 1.
2020.06.14 21:37:57 1: PERL WARNING: Argument "Umschalten Max ohne Memory" isn't numeric in numeric eq (==) at (eval 98872) line 1.
2020.06.14 21:38:11 1: PERL WARNING: Argument "Umschalten DIA1" isn't numeric in numeric eq (==) at (eval 98915) line 1.
2020.06.14 21:38:21 1: PERL WARNING: Argument "Umschalten DIA1" isn't numeric in numeric eq (==) at (eval 98922) line 1.
2020.06.14 21:38:22 1: PERL WARNING: Argument "Umschalten DIA1" isn't numeric in numeric eq (==) at (eval 98924) line 1.



taucht alles erst mit der Version '0.47 - 14.6.2020' auf. Hier ein diff zur 0.46:

@@ -700,18 +701,15 @@ sub PHC_ParseCommands($$)
     readingsBeginUpdate($hash);

     if ($command->{MTYPE} ne "CLK") {
+        my $chName = PHC_ChannelDesc($hash, $command, $command->{CHANNEL});
+        my $cmd    = $command->{FNAME};
         readingsBulkUpdate($hash, 'LastCommand', PHC_CmdText($hash, $command));
-        DoTrigger($name, PHC_ChannelText($hash, $command, $command->{CHANNEL}) . ": " . $command->{FNAME});
-
         if (AttrVal($name, "EMDReadings", 0)) {
-            my $fmAdr = sprintf('%02d', ($command->{ADR} & 0x1F));      # relative module address formatted with two digits
-            my $mType = $command->{MTYPE};
-            my $channel = $command->{CHANNEL};
-            my $rName =  ($mType ? $mType . $fmAdr : 'Module' . sprintf ("x%02X", $command->{ADR})) . "-" .
-                        ($command->{CTYPE} ? $command->{CTYPE} : "") . (defined($channel) ? sprintf('%02d', $channel) : "");
-            my $cmd = $command->{FNAME};
-            readingsBulkUpdate($hash, $rName, $cmd);
-            Log3 $name, 5, "$name: ParseCommand sets EMD reading $rName to $cmd";
+            readingsBulkUpdate($hash, $chName, $cmd);
+            Log3 $name, 5, "$name: ParseCommand sets EMD reading $chName to $cmd";
+        }
+        else {
+            DoTrigger($name, $chName . ": " . $cmd);
         }
     }


abgesehen davon ist da noch mehr kaputt mit der 0.47 ... Z.B. bekommen die Dimmer Module alle keinen Status mehr, steht permanent auf "Aus". Mit 0.46 sieht man z.B. wieder "Umschalten DIA1" usw.

--
ciao, Marc
Maintainer: 98_vitoconnect.pm
Raspberry Pi 4B, 4 GB RAM, 32 GB SD Karte
Raspbian Bullseye 32-bit, FHEM up2date

amenomade

#46
Was Du hier zeigst:
2020.06.14 19:15:34 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 56301) line 1.
2020.06.14 19:15:48 1: PERL WARNING: Argument "Ein Memory" isn't numeric in numeric eq (==) at (eval 56308) line 1.
2020.06.14 19:16:24 1: PERL WARNING: Argument "Dimmen Gegenrichtung" isn't numeric in numeric eq (==) at (eval 56402) line 1.
2020.06.14 19:16:36 1: PERL WARNING: Argument "Dimmen Gegenrichtung" isn't numeric in numeric eq (==) at (eval 56479) line 1.
2020.06.14 19:16:46 1: PERL WARNING: Argument "Ein Max ohne Memory" isn't numeric in numeric eq (==) at (eval 56487) line 1.
2020.06.14 19:16:57 1: PERL WARNING: Argument "Aus" isn't numeric in numeric eq (==) at (eval 56535) line 1.
2020.06.14 21:37:57 1: PERL WARNING: Argument "Umschalten Max ohne Memory" isn't numeric in numeric eq (==) at (eval 98872) line 1.
2020.06.14 21:38:11 1: PERL WARNING: Argument "Umschalten DIA1" isn't numeric in numeric eq (==) at (eval 98915) line 1.

ist per se kein Hinweis auf ein Problem im Modul, sondern auf ein Problem in der Benutzung der Readings irgendwo (ReadingsGroup, DOIF, notify, userReading, usw)
Um genauer zu wissen, wo das Problem tatsächlich liegt, musst Du stacktrace aktivieren.

Das kann natürlich aber sein, dass ein Reading, das vorher numerisch war, jetzt als Text zurückgegeben wird, was alle deine Benutzungen von diesem Reading beeinflüssen würde. Das ist aber nicht unbedingt automatisch ein Bug.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

mcp

Zitat von: amenomade am 15 Juni 2020, 00:11:26
...
ist per se kein Hinweis auf ein Problem im Modul, sondern auf ein Problem in der Benutzung der Readings irgendwo (ReadingsGroup, DOIF, notify, userReading, usw)
Um genauer zu wissen, wo das Problem tatsächlich liegt, musst Du stacktrace aktivieren.


2020.06.15 07:53:14 3: PEHA_PHC: DoEMD called for module 10, channel 01, function ein>0
2020.06.15 07:53:14 3: PEHA_PHC: toggle for module 10 was set and will now be cleared
2020.06.15 07:53:14 3: PEHA_PHC: sends 0a0112fd9f
2020.06.15 07:53:14 1: PERL WARNING: Argument "Ein" isn't numeric in numeric eq (==) at (eval 221660) line 1.
2020.06.15 07:53:14 1: stacktrace:
2020.06.15 07:53:14 1:     main::__ANON__                      called by (eval 221660) (1)
2020.06.15 07:53:14 1:     (eval)                              called by ./FHEM/33_readingsProxy.pm (139)
2020.06.15 07:53:14 1:     main::readingsProxy_update          called by ./FHEM/33_readingsProxy.pm (221)
2020.06.15 07:53:14 1:     main::readingsProxy_Notify          called by fhem.pl (3787)
2020.06.15 07:53:14 1:     main::CallFn                        called by ./FHEM/98_freezemon.pm (1235)
2020.06.15 07:53:14 1:     main::freezemon_callFn              called by ./FHEM/98_freezemon.pm (1348)
2020.06.15 07:53:14 1:     main::__ANON__                      called by fhem.pl (3712)
2020.06.15 07:53:14 1:     main::DoTrigger                     called by fhem.pl (4777)
2020.06.15 07:53:14 1:     main::readingsEndUpdate             called by ./FHEM/98_PHC.pm (753)
2020.06.15 07:53:14 1:     main::PHC_ParseCommands             called by ./FHEM/98_PHC.pm (890)
2020.06.15 07:53:14 1:     main::PHC_ParseFrames               called by ./FHEM/98_PHC.pm (939)
2020.06.15 07:53:14 1:     main::PHC_Read                      called by fhem.pl (3787)
2020.06.15 07:53:14 1:     main::CallFn                        called by ./FHEM/98_freezemon.pm (1235)
2020.06.15 07:53:14 1:     main::freezemon_callFn              called by ./FHEM/98_freezemon.pm (1348)
2020.06.15 07:53:14 1:     main::__ANON__                      called by fhem.pl (761)

2020.06.15 07:54:30 3: PEHA_PHC: DoEMD called for module 10, channel 03, function ein>0
2020.06.15 07:54:30 3: PEHA_PHC: toggle for module 10 was set and will now be cleared
2020.06.15 07:54:30 3: PEHA_PHC: sends 0a0132ffbe
2020.06.15 07:54:30 1: PERL WARNING: Argument "Umschalten DIA1" isn't numeric in numeric eq (==) at (eval 221887) line 1.
2020.06.15 07:54:30 1: stacktrace:
2020.06.15 07:54:30 1:     main::__ANON__                      called by (eval 221887) (1)
2020.06.15 07:54:30 1:     (eval)                              called by ./FHEM/33_readingsProxy.pm (139)
2020.06.15 07:54:30 1:     main::readingsProxy_update          called by ./FHEM/33_readingsProxy.pm (221)
2020.06.15 07:54:30 1:     main::readingsProxy_Notify          called by fhem.pl (3787)
2020.06.15 07:54:30 1:     main::CallFn                        called by ./FHEM/98_freezemon.pm (1235)
2020.06.15 07:54:30 1:     main::freezemon_callFn              called by ./FHEM/98_freezemon.pm (1348)
2020.06.15 07:54:30 1:     main::__ANON__                      called by fhem.pl (3712)
2020.06.15 07:54:30 1:     main::DoTrigger                     called by fhem.pl (4777)
2020.06.15 07:54:30 1:     main::readingsEndUpdate             called by ./FHEM/98_PHC.pm (753)
2020.06.15 07:54:30 1:     main::PHC_ParseCommands             called by ./FHEM/98_PHC.pm (890)
2020.06.15 07:54:30 1:     main::PHC_ParseFrames               called by ./FHEM/98_PHC.pm (939)
2020.06.15 07:54:30 1:     main::PHC_Read                      called by fhem.pl (3787)
2020.06.15 07:54:30 1:     main::CallFn                        called by ./FHEM/98_freezemon.pm (1235)
2020.06.15 07:54:30 1:     main::freezemon_callFn              called by ./FHEM/98_freezemon.pm (1348)
2020.06.15 07:54:30 1:     main::__ANON__                      called by fhem.pl (761)
2020.06.15 07:54:30 1: PERL WARNING: Argument "Umschalten DIA1" isn't numeric in numeric eq (==) at (eval 221889) line 1.
2020.06.15 07:54:30 1: stacktrace:
2020.06.15 07:54:30 1:     main::__ANON__                      called by (eval 221889) (1)
2020.06.15 07:54:30 1:     (eval)                              called by ./FHEM/33_readingsProxy.pm (139)
2020.06.15 07:54:30 1:     main::readingsProxy_update          called by ./FHEM/33_readingsProxy.pm (221)
2020.06.15 07:54:30 1:     main::readingsProxy_Notify          called by fhem.pl (3787)
2020.06.15 07:54:30 1:     main::CallFn                        called by ./FHEM/98_freezemon.pm (1235)
2020.06.15 07:54:30 1:     main::freezemon_callFn              called by ./FHEM/98_freezemon.pm (1348)
2020.06.15 07:54:30 1:     main::__ANON__                      called by fhem.pl (3712)
2020.06.15 07:54:30 1:     main::DoTrigger                     called by fhem.pl (4777)
2020.06.15 07:54:30 1:     main::readingsEndUpdate             called by ./FHEM/98_PHC.pm (753)
2020.06.15 07:54:30 1:     main::PHC_ParseCommands             called by ./FHEM/98_PHC.pm (890)
2020.06.15 07:54:30 1:     main::PHC_ParseFrames               called by ./FHEM/98_PHC.pm (939)
2020.06.15 07:54:30 1:     main::PHC_Read                      called by fhem.pl (3787)
2020.06.15 07:54:30 1:     main::CallFn                        called by ./FHEM/98_freezemon.pm (1235)
2020.06.15 07:54:30 1:     main::freezemon_callFn              called by ./FHEM/98_freezemon.pm (1348)
2020.06.15 07:54:30 1:     main::__ANON__                      called by fhem.pl (761)

2020.06.15 07:56:06 3: PEHA_PHC: DoEMD called for module 10, channel 02, function aus<1
2020.06.15 07:56:06 3: PEHA_PHC: toggle for module 10 was set and will now be cleared
2020.06.15 07:56:06 3: PEHA_PHC: sends 0a0123f7bf
2020.06.15 07:56:07 3: PEHA_PHC: DoEMD called for module 10, channel 02, function ein>1
2020.06.15 07:56:07 3: PEHA_PHC: sends 0a81248447
2020.06.15 07:56:38 1: PERL WARNING: Argument "Aus" isn't numeric in numeric eq (==) at (eval 222280) line 1.
2020.06.15 07:56:38 1: stacktrace:
2020.06.15 07:56:38 1:     main::__ANON__                      called by (eval 222280) (1)
2020.06.15 07:56:38 1:     (eval)                              called by ./FHEM/33_readingsProxy.pm (139)
2020.06.15 07:56:38 1:     main::readingsProxy_update          called by ./FHEM/33_readingsProxy.pm (221)
2020.06.15 07:56:38 1:     main::readingsProxy_Notify          called by fhem.pl (3787)
2020.06.15 07:56:38 1:     main::CallFn                        called by ./FHEM/98_freezemon.pm (1235)
2020.06.15 07:56:38 1:     main::freezemon_callFn              called by ./FHEM/98_freezemon.pm (1348)
2020.06.15 07:56:38 1:     main::__ANON__                      called by fhem.pl (3712)
2020.06.15 07:56:38 1:     main::DoTrigger                     called by fhem.pl (4777)
2020.06.15 07:56:38 1:     main::readingsEndUpdate             called by ./FHEM/98_PHC.pm (753)
2020.06.15 07:56:38 1:     main::PHC_ParseCommands             called by ./FHEM/98_PHC.pm (890)
2020.06.15 07:56:38 1:     main::PHC_ParseFrames               called by ./FHEM/98_PHC.pm (939)
2020.06.15 07:56:38 1:     main::PHC_Read                      called by fhem.pl (3787)
2020.06.15 07:56:38 1:     main::CallFn                        called by ./FHEM/98_freezemon.pm (1235)
2020.06.15 07:56:38 1:     main::freezemon_callFn              called by ./FHEM/98_freezemon.pm (1348)
2020.06.15 07:56:38 1:     main::__ANON__                      called by fhem.pl (761)


aber wie gesagt, mit der 0.47 bekommen z.B. die Dimmer Module (DIM00o00 usw.) alle kein Update mehr, stehen permanent auf "Aus". Mit 0.46 sieht man z.B. wieder "Umschalten DIA1" usw.
Maintainer: 98_vitoconnect.pm
Raspberry Pi 4B, 4 GB RAM, 32 GB SD Karte
Raspbian Bullseye 32-bit, FHEM up2date

amenomade

Dann ist der Fehler in irgendeinem readingsProxy Device.

Was sind "die Dimmer Module (DIM00o00 usw.)" für Fhem Devices?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

mcp

v0.47 updated die Readings nicht mehr wie DIM00o00, DIM04o02 usw. (das sind aktuell keine Devices in FHEM, das sind einfach nur Readings vom PHC Device) - die stehen (wie geschrieben) permanent auf "Aus", auch wenn man die Dimmer per Taster an der Wand einschaltet. Mit v0.46 funktioniert das hingegen wunderbar.

Wenn man nur die doppelten Events weg haben will, dann funktioniert das für mich so (Patch für v0.46):


--- 98_PHC-v0.46.pm     2020-06-06 21:09:22.000000000 +0200
+++ 98_PHC-v0.46b.pm    2020-06-15 23:14:14.990674684 +0200
@@ -701,7 +701,6 @@ sub PHC_ParseCommands($$)

     if ($command->{MTYPE} ne "CLK") {
         readingsBulkUpdate($hash, 'LastCommand', PHC_CmdText($hash, $command));
-        DoTrigger($name, PHC_ChannelText($hash, $command, $command->{CHANNEL}) . ": " . $command->{FNAME});

         if (AttrVal($name, "EMDReadings", 0)) {
             my $fmAdr = sprintf('%02d', ($command->{ADR} & 0x1F));      # relative module address formatted with two digits
@@ -712,6 +711,8 @@ sub PHC_ParseCommands($$)
             my $cmd = $command->{FNAME};
             readingsBulkUpdate($hash, $rName, $cmd);
             Log3 $name, 5, "$name: ParseCommand sets EMD reading $rName to $cmd";
+        } else {
+            DoTrigger($name, PHC_ChannelText($hash, $command, $command->{CHANNEL}) . ": " . $command->{FNAME});
         }
     }
Maintainer: 98_vitoconnect.pm
Raspberry Pi 4B, 4 GB RAM, 32 GB SD Karte
Raspbian Bullseye 32-bit, FHEM up2date

mcp

und hier noch ein kleiner Fix:


--- 98_PHC-v0.46b.pm    2020-06-15 23:14:14.990674684 +0200
+++ 98_PHC-v0.46c.pm    2020-06-15 23:19:10.596866153 +0200
@@ -354,7 +354,7 @@ sub PHC_Attr(@)
             if ($modAdr >= 32) {
                 return "illegal EMD module address $modAdr - address needs to be < 32 and it must not be used on the bus";
             }
-            if ($cnlAdr >= 15) {
+            if ($cnlAdr >= 16) {
                 return "illegal EMD channel address $cnlAdr - address needs to be < 16";
             }

Maintainer: 98_vitoconnect.pm
Raspberry Pi 4B, 4 GB RAM, 32 GB SD Karte
Raspbian Bullseye 32-bit, FHEM up2date

mcp

und der Bindestrich der in einigen Readings zu viel ist ginge so weg:


--- 98_PHC-v0.46c.pm    2020-06-15 23:19:10.596866153 +0200
+++ 98_PHC-v0.46d.pm    2020-06-15 23:37:04.433028729 +0200
@@ -706,7 +706,7 @@ sub PHC_ParseCommands($$)
             my $fmAdr = sprintf('%02d', ($command->{ADR} & 0x1F));      # relative module address formatted with two digits
             my $mType = $command->{MTYPE};
             my $channel = $command->{CHANNEL};
-            my $rName =  ($mType ? $mType . $fmAdr : 'Module' . sprintf ("x%02X", $command->{ADR})) . "-" .
+            my $rName =  ($mType ? $mType . $fmAdr : 'Module' . sprintf ("x%02X", $command->{ADR})) . "" .
                         ($command->{CTYPE} ? $command->{CTYPE} : "") . (defined($channel) ? sprintf('%02d', $channel) : "");
             my $cmd = $command->{FNAME};
             readingsBulkUpdate($hash, $rName, $cmd);


wobei man sich dann das . "" . auch sparen könnte ;)
Maintainer: 98_vitoconnect.pm
Raspberry Pi 4B, 4 GB RAM, 32 GB SD Karte
Raspbian Bullseye 32-bit, FHEM up2date

amenomade

OK, so kann ich mir das jetzt erklären. Der Perl Warning kommt von einem readingsProxy, der Readings DIM... benutzt, die früher numerisch waren, und jetzt nur noch mit "Aus" aktualisiert werden. Klingt logisch.

Zitat von: amenomade am 15 Juni 2020, 00:11:26
Das kann natürlich aber sein, dass ein Reading, das vorher numerisch war, jetzt als Text zurückgegeben wird, was alle deine Benutzungen von diesem Reading beeinflüssen würde. Das ist aber nicht unbedingt automatisch ein Bug.

Dann muss man auf Stefan warten. Wobei... an seiner Stelle würde ich noch ein bisschen warten, bis Du alles saniert hast ;) :D
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

mcp

#53
und noch ein Problem ;-/

Dimmer via "Umschalten DIA1 EIN/AUS" einschalten belegt via Funktionsprogrammierung "Aus < 1" = funktioniert, Log:


2020.06.16 22:37:47 3: PEHA_PHC: DoEMD called for module 04, channel 02, function aus<1
2020.06.16 22:37:47 5: PEHA_PHC: found function 3
2020.06.16 22:37:47 3: PEHA_PHC: toggle for module 04 was set and will now be cleared
2020.06.16 22:37:47 3: PEHA_PHC: sends 040123ecaf
2020.06.16 22:37:47 5: SW: 040123ecaf
2020.06.16 22:37:47 5: PEHA_PHC: Parseframes: loop with raw buffer: 040123ecaf04010075bca4012ede7ba4020082ad3ea4012ede7ba4020082ad3e
2020.06.16 22:37:47 5: PEHA_PHC: Parseframes: Adr 4/x04 Len 1 T0 Data 23 (Frame 040123 ecaf) Rest 04010075bca4012ede7ba4020082ad3ea4012ede7ba4020082ad3e
2020.06.16 22:37:47 5: PEHA_PHC: Parseframes: 040123 ecaf is not an Ack frame, wait for ack to follow
2020.06.16 22:37:47 5: PEHA_PHC: Parseframes: loop with raw buffer: 04010075bca4012ede7ba4020082ad3ea4012ede7ba4020082ad3e
2020.06.16 22:37:47 5: PEHA_PHC: Parseframes: Adr 4/x04 Len 1 T0 Data 00 (Frame 040100 75bc) Rest a4012ede7ba4020082ad3ea4012ede7ba4020082ad3e
2020.06.16 22:37:47 5: PEHA_PHC: Parseframes: Ack received
2020.06.16 22:37:47 5: PEHA_PHC: ParseCode called, fAdr 004, typeArr = EMD, code x23
2020.06.16 22:37:47 5: PEHA_PHC: SplitCode splits code 35 for type EMD into  channel 2 / function 3
2020.06.16 22:37:47 5: PEHA_PHC: ParseCode checks typelist EMD against F=x03 C=x02Len=1, ackLen=1
2020.06.16 22:37:47 5: PEHA_PHC: ParseCode match EMD03+01 / Aus < 1 i
2020.06.16 22:37:47 4: PEHA_PHC: ParseCommands EMD04i02 F3 Aus < 1 data x23 ack x00 tg 0 EG_Betonwand_Kueche_Spuele_Steckdosen_fuer_Schrankbeleuchtung_Terrassentuer_Deckenlampen_3x
2020.06.16 22:37:47 5: PEHA_PHC: ParseCommand sets reading EMD04i02 to Aus < 1
2020.06.16 22:37:47 5: PEHA_PHC: Parseframes: loop with raw buffer: a4012ede7ba4020082ad3ea4012ede7ba4020082ad3e
2020.06.16 22:37:47 5: PEHA_PHC: Parseframes: Adr 164/xa4 Len 1 T0 Data 2e (Frame a4012e de7b) Rest a4020082ad3ea4012ede7ba4020082ad3e
2020.06.16 22:37:47 5: PEHA_PHC: Parseframes: a4012e de7b is not an Ack frame, wait for ack to follow
2020.06.16 22:37:47 5: PEHA_PHC: Parseframes: loop with raw buffer: a4020082ad3ea4012ede7ba4020082ad3e
2020.06.16 22:37:47 5: PEHA_PHC: Parseframes: Adr 164/xa4 Len 2 T0 Data 0082 (Frame a4020082 ad3e) Rest a4012ede7ba4020082ad3e
2020.06.16 22:37:47 5: PEHA_PHC: Parseframes: Ack received
2020.06.16 22:37:47 5: PEHA_PHC: ParseCode called, fAdr 164, typeArr = DIM, code x2E
2020.06.16 22:37:47 5: PEHA_PHC: SplitCode splits code 46 for type DIM into  channel 1 / function 14
2020.06.16 22:37:47 5: PEHA_PHC: ParseCode checks typelist DIM against F=x0E C=x01Len=1, ackLen=2
2020.06.16 22:37:47 5: PEHA_PHC: ParseCode match DIM140102 / Umschalten DIA1 cb2
2020.06.16 22:37:47 4: PEHA_PHC: ParseCommands DIM04o01 F14 Umschalten DIA1 data x2E ack x00,x82 tg 0 EG_Kueche_Terrassentuer_Deckenlampen_3x
2020.06.16 22:37:47 5: PEHA_PHC: ParseCommand sets reading DIM04o01 to Umschalten DIA1
2020.06.16 22:37:47 5: PEHA_PHC: ParseCommand channel map = 10
2020.06.16 22:37:47 5: PEHA_PHC: ParseCommand sets reading EG_Kueche_Terrassentuer_Deckenlampen_3x for channel 1 to 1
2020.06.16 22:37:47 5: PEHA_PHC: ParseCommand sets reading EG_Esszimmer_Deckenlampen_8x for channel 0 to 0
2020.06.16 22:37:47 5: PEHA_PHC: Parseframes: loop with raw buffer: a4012ede7ba4020082ad3e
2020.06.16 22:37:47 5: PEHA_PHC: Parseframes: Adr 164/xa4 Len 1 T0 Data 2e (Frame a4012e de7b) Rest a4020082ad3e
2020.06.16 22:37:47 5: PEHA_PHC: Parseframes: a4012e de7b is not an Ack frame, wait for ack to follow
2020.06.16 22:37:47 5: PEHA_PHC: Parseframes: loop with raw buffer: a4020082ad3e
2020.06.16 22:37:47 5: PEHA_PHC: Parseframes: Adr 164/xa4 Len 2 T0 Data 0082 (Frame a4020082 ad3e) Rest
2020.06.16 22:37:47 5: PEHA_PHC: Parseframes: Ack received
2020.06.16 22:37:47 5: PEHA_PHC: ParseCode called, fAdr 164, typeArr = DIM, code x2E
2020.06.16 22:37:47 5: PEHA_PHC: SplitCode splits code 46 for type DIM into  channel 1 / function 14
2020.06.16 22:37:47 5: PEHA_PHC: ParseCode checks typelist DIM against F=x0E C=x01Len=1, ackLen=2
2020.06.16 22:37:47 5: PEHA_PHC: ParseCode match DIM140102 / Umschalten DIA1 cb2
2020.06.16 22:37:47 4: PEHA_PHC: ParseCommands DIM04o01 F14 Umschalten DIA1 data x2E ack x00,x82 tg 0 EG_Kueche_Terrassentuer_Deckenlampen_3x
2020.06.16 22:37:47 5: PEHA_PHC: ParseCommand sets reading DIM04o01 to Umschalten DIA1
2020.06.16 22:37:47 5: PEHA_PHC: ParseCommand channel map = 10
2020.06.16 22:37:47 5: PEHA_PHC: ParseCommand sets reading EG_Kueche_Terrassentuer_Deckenlampen_3x for channel 1 to 1
2020.06.16 22:37:47 5: PEHA_PHC: ParseCommand sets reading EG_Esszimmer_Deckenlampen_8x for channel 0 to 0



wenn die Lampe wieder aus ist und ich dann DIA2 einschalten will, in der Peha belegt als "Ein > 1 Umschalten DIA2 EIN/AUS" kommt das:


2020.06.16 22:39:05 3: PEHA_PHC: DoEMD called for module 04, channel 02, function ein>1
2020.06.16 22:39:05 5: PEHA_PHC: found function 4
2020.06.16 22:39:05 3: PEHA_PHC: toggle for module 04 was set and will now be cleared
2020.06.16 22:39:05 3: PEHA_PHC: sends 04012453db
2020.06.16 22:39:05 5: SW: 04012453db
2020.06.16 22:39:06 5: PEHA_PHC: Parseframes: loop with raw buffer: 04012453db04010075bca4033100001cf1a4033100001cf1a4020082ad3ea4033100001cf1a4020082ad3e
2020.06.16 22:39:06 5: PEHA_PHC: Parseframes: Adr 4/x04 Len 1 T0 Data 24 (Frame 040124 53db) Rest 04010075bca4033100001cf1a4033100001cf1a4020082ad3ea4033100001cf1a4020082ad3e
2020.06.16 22:39:06 5: PEHA_PHC: Parseframes: 040124 53db is not an Ack frame, wait for ack to follow
2020.06.16 22:39:06 5: PEHA_PHC: Parseframes: loop with raw buffer: 04010075bca4033100001cf1a4033100001cf1a4020082ad3ea4033100001cf1a4020082ad3e
2020.06.16 22:39:06 5: PEHA_PHC: Parseframes: Adr 4/x04 Len 1 T0 Data 00 (Frame 040100 75bc) Rest a4033100001cf1a4033100001cf1a4020082ad3ea4033100001cf1a4020082ad3e
2020.06.16 22:39:06 5: PEHA_PHC: Parseframes: Ack received
2020.06.16 22:39:06 5: PEHA_PHC: ParseCode called, fAdr 004, typeArr = EMD, code x24
2020.06.16 22:39:06 5: PEHA_PHC: SplitCode splits code 36 for type EMD into  channel 2 / function 4
2020.06.16 22:39:06 5: PEHA_PHC: ParseCode checks typelist EMD against F=x04 C=x02Len=1, ackLen=1
2020.06.16 22:39:06 5: PEHA_PHC: ParseCode match EMD04+01 / Ein > 1 i
2020.06.16 22:39:06 4: PEHA_PHC: ParseCommands EMD04i02 F4 Ein > 1 data x24 ack x00 tg 0 EG_Betonwand_Kueche_Spuele_Steckdosen_fuer_Schrankbeleuchtung_Terrassentuer_Deckenlampen_3x
2020.06.16 22:39:06 5: PEHA_PHC: ParseCommand sets reading EMD04i02 to Ein > 1
2020.06.16 22:39:06 5: PEHA_PHC: Parseframes: loop with raw buffer: a4033100001cf1a4033100001cf1a4020082ad3ea4033100001cf1a4020082ad3e
2020.06.16 22:39:06 5: PEHA_PHC: Parseframes: Adr 164/xa4 Len 3 T0 Data 310000 (Frame a403310000 1cf1) Rest a4033100001cf1a4020082ad3ea4033100001cf1a4020082ad3e
2020.06.16 22:39:06 5: PEHA_PHC: Parseframes: a403310000 1cf1 is not an Ack frame, wait for ack to follow
2020.06.16 22:39:06 5: PEHA_PHC: Parseframes: loop with raw buffer: a4033100001cf1a4020082ad3ea4033100001cf1a4020082ad3e
2020.06.16 22:39:06 5: PEHA_PHC: Parseframes: Adr 164/xa4 Len 3 T0 Data 310000 (Frame a403310000 1cf1) Rest a4020082ad3ea4033100001cf1a4020082ad3e
2020.06.16 22:39:06 4: PEHA_PHC: Parseframes: Resend of a403310000 1cf1 detected
2020.06.16 22:39:06 5: PEHA_PHC: Parseframes: loop with raw buffer: a4020082ad3ea4033100001cf1a4020082ad3e
2020.06.16 22:39:06 5: PEHA_PHC: Parseframes: Adr 164/xa4 Len 2 T0 Data 0082 (Frame a4020082 ad3e) Rest a4033100001cf1a4020082ad3e
2020.06.16 22:39:06 5: PEHA_PHC: Parseframes: Ack received
2020.06.16 22:39:06 5: PEHA_PHC: ParseCode called, fAdr 164, typeArr = DIM, code x31
2020.06.16 22:39:06 5: PEHA_PHC: SplitCode splits code 49 for type DIM into  channel 1 / function 17
2020.06.16 22:39:06 5: PEHA_PHC: ParseCode checks typelist DIM against F=x11 C=x01Len=3, ackLen=2
2020.06.16 22:39:06 3: PEHA_PHC: ParseCode DIM0401 F17 data x31,x00,x00 ack x00,x82 tg 0 DIM0401 no parse info
2020.06.16 22:39:06 5: PEHA_PHC: Parseframes: loop with raw buffer: a4033100001cf1a4020082ad3e
2020.06.16 22:39:06 5: PEHA_PHC: Parseframes: Adr 164/xa4 Len 3 T0 Data 310000 (Frame a403310000 1cf1) Rest a4020082ad3e
2020.06.16 22:39:06 5: PEHA_PHC: Parseframes: a403310000 1cf1 is not an Ack frame, wait for ack to follow
2020.06.16 22:39:06 5: PEHA_PHC: Parseframes: loop with raw buffer: a4020082ad3e
2020.06.16 22:39:06 5: PEHA_PHC: Parseframes: Adr 164/xa4 Len 2 T0 Data 0082 (Frame a4020082 ad3e) Rest
2020.06.16 22:39:06 5: PEHA_PHC: Parseframes: Ack received
2020.06.16 22:39:06 5: PEHA_PHC: ParseCode called, fAdr 164, typeArr = DIM, code x31
2020.06.16 22:39:06 5: PEHA_PHC: SplitCode splits code 49 for type DIM into  channel 1 / function 17
2020.06.16 22:39:06 5: PEHA_PHC: ParseCode checks typelist DIM against F=x11 C=x01Len=3, ackLen=2
2020.06.16 22:39:06 3: PEHA_PHC: ParseCode DIM0401 F17 data x31,x00,x00 ack x00,x82 tg 0 DIM0401 no parse info


-> ParseCode DIM0401 F17 data x31,x00,x00 ack x00,x82 tg 0 DIM0401 no parse info

entsprechend ist für FHEM der Dimmer aus, das Reading ist 0

DIA3 hingegen funktioniert wieder.
Maintainer: 98_vitoconnect.pm
Raspberry Pi 4B, 4 GB RAM, 32 GB SD Karte
Raspbian Bullseye 32-bit, FHEM up2date

mcp


ParseCode checks typelist DIM against F=x0E C=x01Len=1, ackLen=2

        vs.

ParseCode checks typelist DIM against F=x11 C=x01Len=3, ackLen=2


wenn ich den Code richtig verstehe wäre das dann der Fix dafür:


--- 98_PHC-v0.46d.pm    2020-06-15 23:37:04.433028729 +0200
+++ 98_PHC-v0.46e.pm    2020-06-16 23:58:25.012406396 +0200
@@ -209,7 +209,7 @@ my %PHC_functions = (
     'DIM140102' => ['Umschalten DIA1', 'cb2'],
     'DIM150102' => ['Ein DIA1', 'cb2'],
     'DIM160102' => ['Speichern DIA2', 'cb2'],
-    'DIM170102' => ['Umschalten DIA2', 'cb2'],
+    'DIM170302' => ['Umschalten DIA2', 'cb2'],
     'DIM180102' => ['Ein DIA2', 'cb2'],
     'DIM190102' => ['Speichern DIA3', 'cb2'],
     'DIM200102' => ['Umschalten DIA3', 'cb2'],



wenn ich mir mal so meine alten FHEM Logs anschaue, dann erklärt sich wohl warum das mit den Rollladen mal funktioniert und mal nicht:


fhem-20200610.log:2020.06.10 18:16:36 3: PEHA_PHC: ParseCode JRM0701 F4 data x24,x64,x10 ack x00 tg 0 JRM0701 no parse info
fhem-20200611.log:2020.06.11 16:16:35 3: PEHA_PHC: ParseCode JRM0701 F4 data x24,x64,x10 ack x00 tg 0 JRM0701 no parse info
fhem-20200611.log:2020.06.11 16:19:31 3: PEHA_PHC: ParseCode JRM0701 F4 data x24,x64,x10 ack x00 tg 1 JRM0701 no parse info
fhem-20200613.log:2020.06.13 08:13:18 3: PEHA_PHC: ParseCode JRM0701 F5 data x25,x65,x00 ack x00 tg 1 JRM0701 no parse info
fhem-20200613.log:2020.06.13 08:30:19 3: PEHA_PHC: ParseCode JRM0701 F4 data x24,x64,x00 ack x00 tg 0 JRM0701 no parse info
fhem-20200614.log:2020.06.14 11:04:44 3: PEHA_PHC: ParseCode JRM0600 F4 data x04,x44,x00 ack x00 tg 1 JRM0600 no parse info
fhem-20200614.log:2020.06.14 11:04:44 3: PEHA_PHC: ParseCode JRM0700 F4 data x04,x44,x00 ack x00 tg 0 JRM0700 no parse info
fhem-20200614.log:2020.06.14 14:23:51 3: PEHA_PHC: ParseCode JRM0701 F4 data x24,x64,x00 ack x00 tg 1 JRM0701 no parse info
fhem-20200614.log:2020.06.14 15:46:02 3: PEHA_PHC: ParseCode JRM0701 F4 data x24,x64,x00 ack x00 tg 1 JRM0701 no parse info
fhem-20200615.log:2020.06.15 06:18:08 3: PEHA_PHC: ParseCode JRM0701 F4 data x24,x64,x00 ack x00 tg 0 JRM0701 no parse info
fhem-20200615.log:2020.06.15 13:58:54 3: PEHA_PHC: ParseCode JRM0700 F5 data x05,x65,x00 ack x00 tg 1 JRM0700 no parse info
fhem-20200615.log:2020.06.15 14:55:24 3: PEHA_PHC: ParseCode JRM0701 F4 data x24,x64,x00 ack x00 tg 0 JRM0701 no parse info
fhem-20200615.log:2020.06.15 14:55:43 3: PEHA_PHC: ParseCode JRM0701 F4 data x24,x64,x00 ack x00 tg 0 JRM0701 no parse info
fhem-20200615.log:2020.06.15 14:55:58 3: PEHA_PHC: ParseCode JRM0701 F5 data x25,x65,x00 ack x00 tg 1 JRM0701 no parse info
fhem-20200616.log:2020.06.16 22:25:35 3: PEHA_PHC: ParseCode JRM0600 F5 data x05,x25,x45,x00 ack x00 tg 0 JRM0600 no parse info


anscheinend ist die Länge variabel?!
Maintainer: 98_vitoconnect.pm
Raspberry Pi 4B, 4 GB RAM, 32 GB SD Karte
Raspbian Bullseye 32-bit, FHEM up2date

mcp

Hallo Stefan,

ich hoffe dass du nicht wirklich darauf wartest was amenomade letztens geschrieben hat ;-)
Maintainer: 98_vitoconnect.pm
Raspberry Pi 4B, 4 GB RAM, 32 GB SD Karte
Raspbian Bullseye 32-bit, FHEM up2date

mcp

#56
und noch ein Bug ;-(

habe gerade meine Kanalliste neu importiert da ich Änderungen in der Peha Config hatte.

Nun habe ich bei allen EMDs die nicht konfiguriert sind exakt immer den gleichen Text drin stehen, quasi immer den Text von dem EMD Kanal vorher.

Mit der alten Version bei der die letzte Änderung für den Import noch nicht drin ist klappt es hingegen.

Ich habe noch ein STM v2 und ebenso die v2 Software dazu.
Maintainer: 98_vitoconnect.pm
Raspberry Pi 4B, 4 GB RAM, 32 GB SD Karte
Raspbian Bullseye 32-bit, FHEM up2date

StefanStrobel

Hallo,

sorry für die späte Rückmeldung. Ich war mit einer neuen Version von HTTPMOD beschäftigt (Umbau als Package), habe keine Meldung mehr über neue Nachrichten in diesem Thread bekommen und so etwas den Anschluss verpasst.
Bei der Menge von Feedback versuche ich das mal der Reihe nach zu verarbeiten:

Zitat
2020.06.14 16:13:41 1: PERL WARNING: Argument "Aus" isn't numeric in numeric eq (==) at (eval 558244) line 1.
2020.06.14 16:14:10 1: PERL WARNING: Argument "Ein" isn't numeric in numeric eq (==) at (eval 558326) line 1.
sollte inzwischen geklärt sein. Ein EMD liefert keine 0/1 sondern Taster-Befehle wie "Ein > 0". Ob das einen Ausgang ein- oder ausschaltet kann man dabei nicht erkennen.
Vermutlich wäre es doch besser, wenn das Modul Events nicht mit den Kanalnamen wie "Taster für Küchenlichter" erzeugt, sondern wie ursprünglich als EMD10..., dann kann man im Notify besser darauf filtern und reagieren.

Zitat
abgesehen davon ist da noch mehr kaputt mit der 0.47 ... Z.B. bekommen die Dimmer Module alle keinen Status mehr, steht permanent auf "Aus". Mit 0.46 sieht man z.B. wieder "Umschalten DIA1" usw.

Schau doch mal nach einem Reading mit einem sprechenden Namen. In einer früheren Version waren die Dimmer nicht wirklich implementiert. Seit ich das etwas ergänzt habe, sollten statt der Readings mit der Modul- und Kanalnummer die Bezeichnungen verwendet werden (sofern als Attribut gesetzt). Das alte Reading wird dadurch aber nicht automatisch gelöscht. Deshalb steht es noch rum und ändert sich nicht mehr.

Zitat
Wenn man nur die doppelten Events weg haben will, dann funktioniert das für mich so (Patch für v0.46):

Ursprünglich gab es für alle Aktivitäten auf dem Bus einfache Events, die keine Kanalbezeichnungen sondern die Modulnummern verwendet haben. Durch die zusätzlichen Readings für EMDs gab es dann doppelte Events. Die vom Bus und die für das Setzen von Readings mit den Kanabezeichnungen. Das habe ich versucht aufzuräumen und dabei auch die Events so geändert, dass sie die Bezeichnungen verwenden.
Wenn das stört, kann ich auch ein Attribut einführen, mit dem man einstellen kann, ob die Events eher minimalistisch ausfallen sollen.

Zitat
-            if ($cnlAdr >= 15) {
+            if ($cnlAdr >= 16) {

Übernehme ich.

Zitat
-            my $rName =  ($mType ? $mType . $fmAdr : 'Module' . sprintf ("x%02X", $command->{ADR})) . "-" .
+            my $rName =  ($mType ? $mType . $fmAdr : 'Module' . sprintf ("x%02X", $command->{ADR})) . "" .
Der ganze Codeabschnitt war auf die Schnelle eingefügt um die gewünschten EMD Readings einzubauen. Bei der nächsten Überarbeitung ist mir klar geworden, dass der Code komplett redundant zur Funktion PHC_ChannelDesc ist. Daher die Änderung.

Zitat
-> ParseCode DIM0401 F17 data x31,x00,x00 ack x00,x82 tg 0 DIM0401 no parse info
Ja, so etwas wird es noch an anderen Stellen geben.
Das Protokoll ist ja proprietär und nicht dokumentiert. Das Modul basiert daher auf meinen Beobachtungen und dem was andere bisher dazu geschrieben haben. bei den Dimmern gibt es noch ein paar Unbekannte...

Zitat
-    'DIM170102' => ['Umschalten DIA2', 'cb2'],
+    'DIM170302' => ['Umschalten DIA2', 'cb2'],
...
anscheinend ist die Länge variabel?!

Da können wir nur raten. Ich würde im Zweifelsfall beide Zeilen drin lassen. Dann kann das Modul evt. in beiden Fälen etwas erkennen.
Das muss ich mir aber noch genauer ansehen.

Zitat
und noch ein Bug ;-(
habe gerade meine Kanalliste neu importiert da ich Änderungen in der Peha Config hatte.
Nun habe ich bei allen EMDs die nicht konfiguriert sind exakt immer den gleichen Text drin stehen, quasi immer den Text von dem EMD Kanal vorher.

Na ja, auch das Format der Kanal-Liste ist kein dokumentierter Standard. Ich habe es damals auf die Schnelle für meine Datei implementiert. Dann für die von Henrik ergänzt. Wenn Du Deine Kanalliste postest, kann ich mal schauen, woran es liegt. Oder Du versuchst die Abweichung / den Fehler selbst zu finden.

Generell ist es so, dass ich das Modul 2017 geschrieben habe und sich danach kaum jemand dafür interessiert hat. PHC war wohl nie weit verbreitet und seit es offiziell eingestellt wurde, ist das Interesse nicht gerade gestiegen.
Daher macht es bisher nur die Dinge, die mir selbst wichtig waren, zumal vieles erst mit aufwendigem Reverse-Engineering und viel Raten machbar ist. Ich erweitere das gerne, habe aber leider nur gelegentlich Zeit zum Programmieren und in der wenigen Zeit muss ich mich dann entscheiden, ob ich mich um die Module HTTPMOD, Modbus, ArduCounter, FReplacer oder PHC kümmere...
Wenn Du also selbst in den Code schauen oder das Protokoll weiter analysieren kannst, nehme ich die Erkenntnisse gerne ins Modul auf. Das Beschleunigt die Weiterentwicklung auf jeden Fall :-)

Gruss
    Stefan

StefanStrobel

Hallo,

ich habe heute am Abend mal angefangen das PHC-Modul aufzuräumen und ein paar Dinge sauberer zu machen.
- Alle Bus-Messages außer CLK erzeugen Events unabhängug von Readings und mit dem neuen Attribut BusEvents kann man konfigurieren, wie diese aussehen sollen. Ich würde das auf 'small' setzen. Dann enthalten die Events nicht den Namen, der eventuell mit einer channelDescription vergeben wurde, sondern die Kurzbezeichnung wie z.B. EMD12i01: Ein > 0.
- die optional einschaltbaren EMD-Readings erzeugen jetzt generell keine Events mehr, da das nur zu Redundanzen führt (unabhängig vom Reading erzeugte ein Eingang sowieso ein Event aber das ist jetzt mit dem Attribut BusEvents konfigurierbar )
- Intern hat das Modul jetzt einen eigenen Namensraum, aber davon sollte man nichts bemerken ;-)

Es wäre hilfreich, wenn jemand den Zwischenstand testen könnte.

Gruss / Thanx
   Stefan


StefanStrobel

Hallo,

hier nochmals ein Update.
Neu ist die Unterstützung des XML-RPC-Interface der V3-Steuerung.
Damit kann man über die Steuerung auch direkt Ausgänge ansteuern (ohne Programmierung im STM).
Um es zu testen muss man neben dem PHC-Modul auch ein HTTPMOD-Device definieren:

define PHC-STM-XMLRPC HTTPMOD http://your-stm-ip:6680/ 0


dieses wird dem PHC-Moduls dann mit einem Attribut bekannt gemacht:

attr PHC HTTPMOD PHC-STM-XMLRPC


Dann kann man Ausgänge zum direkten Schalten freischalten.
Beispiel:

define PHC PHC /dev/rs485-3@19200,8,N,2
attr PHC HTTPMOD PHCService
attr PHC STM_ADR 0

attr PHC channelAMD03o02description Arbeiten-Lampenschiene
attr PHC channelAMD03o02set 1

attr PHC channelJRM22o02description Rollade AZ Hinten
attr PHC channelJRM22o02set 1

define PHC-STM-XMLRPC HTTPMOD http://your-stm-ip:6680/ 0


Dann kann man Ausgänge schalten mit:

set PHC Arbeiten-Lampenschiene ein


oder mit spezifischeren PHC-Bus-Befehlen:

set PHC Arbeiten-Lampenschiene ein mit timer time=10
set PHC Rollade_AZ_Hinten senken prio=2 set=1 time=50


Noch habe ich nicht alle Bus-Befehle für alle Module aktiviert und getestet, aber die wichtigsten sollten drin sein.
Bitte gebt mir Feedback ob es bei Euch so läuft.

Gruss
   Stefan