kein Readings Update via EIB und Uhrzeit ohne Wochentag inkl. Lösung

Begonnen von apairon, 03 März 2015, 13:02:55

Vorheriges Thema - Nächstes Thema

apairon

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

Andi291

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