FHEM Forum

FHEM - Hausautomations-Systeme => KNX/EIB => Thema gestartet von: apairon am 03 März 2015, 13:02:55

Titel: kein Readings Update via EIB und Uhrzeit ohne Wochentag inkl. Lösung
Beitrag von: apairon am 03 März 2015, 13:02:55
Hallo FHEM'ler,

ich konfiguriere mir seit einigen Tagen FHEM als Visu für meine KNX-Welt und als Verbindung zwischen KNX und nen paar Homematic-Komponenten.
Dabei ist mir beim Erstellen von readingsGroup's aufgefallen, dass deren Werte von state's aus EIB-Devices nicht via longpoll aktualisiert werden. Nach einiger Quellcode-Schnüffelei in anderen Modulen ist mir immer wieder der Aufruf von "readingsSingleUpdate($hash,"state",$v,1);" aufgefallen, welcher aber im EIB-Modul fehlt.
Nachdem ich den Aufruf an den geeigneten Stellen hinzugefügt habe, funktioniert alles wie erwartet. Außerdem wird der state jetzt auch in der Detail-Ansicht via longpoll aktualisiert, was vorher ebenso nicht der Fall war.

Das zweite Problem war, dass die von FHEM gesendete Uhrzeit den Wochentag nicht enthält, der aber für Gira Tastsensoren als Heizungsregler (Heizungsuhr) notwendig ist. Ich sende die Zeit auf den Bus, wie in der Doku als Beispiel zum Modul aufgeführt ist.

Der folgende Patch gegen die aktuelle Datei 10_EIB.pm (via Update von gestern) behebt beide beschriebene Probleme:


--- org_10_EIB.pm 2014-11-09 14:16:06.000000000 +0100
+++ 10_EIB.pm 2015-03-03 12:26:39.042460075 +0100
@@ -292,6 +292,9 @@
     $lh->{STATE} = $v;
     $lh->{READINGS}{state}{TIME} = $tn;
     $lh->{READINGS}{state}{VAL} = $v;
+
+    readingsSingleUpdate($lh,"state",$v,1);
+
   }
   return $ret;
}
@@ -347,6 +350,8 @@
      $lh->{READINGS}{state}{TIME} = TimeNow();
      $lh->{READINGS}{state}{VAL} = $v;
          Log 2, "EIB $n $v";
+
+                              readingsSingleUpdate($lh,"state",$v,1);
         
      push(@list, $n);
      $found = 1;
@@ -422,8 +427,14 @@
my ($secs,$mins,$hours,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$year+=1900;
$mon++;
+
+                # calculate offset for weekday
+ if ($wday eq "0") {
+ $wday = 7;
+ }
+ my $hoffset = 32*$wday;

- my $fullval = $secs + ($mins<<8) + ($hours<<16);
+ my $fullval = $secs + ($mins<<8) + ( ($hoffset + $hours) <<16);
$transval = sprintf("00%.6x",$fullval);

Log(5,"EIB $code encode $value = $fullval hours: $hours mins: $mins secs: $secs translated: $transval");



An dieser Stelle möchte ich mich als Forum-Neuling bei den Entwicklern und Unterstützern von FHEM für dieses tolle Software bedanken. Die Software ersetzt bei mir eine teure KNX-Visu und es mach echt Spaß mit FHEM immer mehr zu automatisieren.


Vielen Dank
Titel: Antw:kein Readings Update via EIB und Uhrzeit ohne Wochentag inkl. Lösung
Beitrag von: Andi291 am 18 Mai 2015, 19:54:06
Hallo Apairon,

den Patch hatte ich bereits vor einiger Zeit eingebaut.
Aktuelles EIB-Modul ist seit einigen Tagen regulär per Update verfügbar...

Grüße, Andi