Samurize FHEM Status

Begonnen von unimatrix, 04 Oktober 2013, 16:16:52

Vorheriges Thema - Nächstes Thema

unimatrix

Hallo,

möchte mir auf meinen Rechnern / Notebooks auf dem Desktophintergrund per Nutzung der leider nicht mehr weiterentwickelten Software Samurize Statusinfos anzeigen lassen.

Es handelt sich um Windows-7-REchner, daher überlege, ich wie ich die Daten möglichst einfach und ressourcenschonend regelmäßig aktualisieren kann. Obwohl ich auch eine Reihe aggregierte Infos anzeigen werde, fangen wir mal mit dem Einfach an, z.B. die Temperaturen aller Räume. Ich hätte die Aktualisierung gerne im Sekundentakt (für Temperaturen egal - aber bei Licht sinnvoll). D.h. ich muss von mehreren Windows-Rechnern in meinem Netzwerk aus (am liebsten auch wenn die im VPN übers Internet sind) die States einer ganzen Reihe von Devices abfragen.

Folgende Überlegungen habe ich schon angestellt:

- per z.B. Script auf dem FHEM Host (ein normaler Rechner / Linux) alle paar Sekunden ein "fhem.pl 7072 get device state usw..." aufrufen, und das Ergebnis in
   a) Dateien auf dem Server speichern. Diese werden dann als Datenquelle über Samba-Freigaben von Samurize angezapft. Flaschenhals: Samba hat wahrscheinlich für Dateien mit wenigen Byte Inhalt einen Overhead von vielen 1000% und außerdem eine gewisse Latenz (meine ich wenigstens). Windows würde ja jede Sekunde ca. 30 Dateien übers Netz immer wieder öffnen.

   b) Die Dateien per "push" vom Server aus auf die verschiedenen Netzwerkclients verteilen. Gleiches Problem, aber andersrum

- DBLog mit MySQL nutzen und per Windows irgendwie darauf zugreifen. Samurize hat leider keine möglichkeit des direkten MySQL Zugriffes. Umweg über PHP und Webseite auf dem Server - erscheint umständlich.

- Logfiles automatisch parsen und somit einzelne Statefiles pro Kanal erstellen

- sich fragen, ob FHEM nicht auch einzelne Statefiles direkt erstellen und aktuell halten könnte?

Hat schonmal jemand ähnliche Anstrengungen unternommen?
Man kann ja auch Aktionen hinterlegen und diese z.B. per HTTP-Get realisieren.

Das wäre dann so eine Art Floorplan auf dem Desktophintergrund und somit immer verfügbar...

Das ganze möchte ich dann mit anderen Informationen kombinieren. Wettervorhersage, aber auch, welche Aufnahmen sind auf dem VDR-SErver in nächster Zeit angelegt, welche Musik läuft in welchem Zimmer, usw.

UliM

Hi,
hmmm, muss es samurize sein?
Ne Alternative wäre vielleicht, nen floorplan mit den o.g. Infos zusammenzubasteln und sich ein tool zu besorgen, das eine webpgae (nämlich den floorplan) als Desktop-Hinergrund anzeigt.
Scheint auch mit Bordmitteln zu gehen: http://support.microsoft.com/kb/171165/de
Weiss allerdings nicht, ob dieser Hintergrund dann auch aktualisiert wird.

Wenn Du's hinbekommst, schreib wie - das hätt ich dann auch gern :)

=8-)
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

unimatrix

Hi,

Floorplan hab ich auch erst überlegt, aber ich will da auch andere Informationen integrieren (z.B. welche TV-Aufnahmen in den nächsten Tagen programmiert sind, usw.).

Habe inzwischen eine erste Lösung: per Notify lass  ich einzelne Textdateien (für jede Information eine eigene) aktualisieren. Also in einem Ordner habe ich z.B. eine Datei "Licht_WZ.txt" in der steht entweder on oder off drin. Die Datei wird nur bei einem Notify neu beschrieben also nur wenn sich der Wert ändert. Samurize schaut auf das Modify-Attribut der Dateien in dem Ordner und liest die dann neu ein. Bisher, auch über WLAN, sogar VPN, kein Problem offenbar...die Perl-Schnippsel die ich per Notify aufrufe formatieren noch alles so wie ich es haben will. Z.B. für Thermostate wird ein String generiert, wie z.B. "20.5 / 21.0" - das bedeutet Ist-Temperatur/Soll-Temperatur

Was ich noch nicht eingebaut habe ist eine Bedienung. Neben den Temperaturen werde ich kleine + und - Knöpfe anbringen mit denen man manuell die Solltemperatur erhöhen / verringern kann.

Sobald es noch "fertiger" ist kann ich ein kleines Demo-Video erstellen und die Lösung vorstellen.

VG

unimatrix

Hallo,

habe eine erste Version fertig. ANbei mal ein Screenshot von einem Teil meines Desktops. Das ganze ist jetzt ohne Blick auf schönes Design als einfacher weißer Text auf schwarzem grund realisiert. Natürlich kann man damit beliebig viele Design-Spiele machen aber ich bin da eher puristisch.

Die Informationen werden jetzt alle 15 Sekunden aktualisiert, das dürfte ja wirklich reichen. Performanceprobleme konnte ich keine erkennen, die gleiche Konfiguration läuft hier auf parallel bis zu 4 Rechnern die alle auf den gleichen FHEM Server zugreifen. Die Daten kommen aus Textdateien die auf dem FHEM Server per notify und teilweise per Cron-Job (FHEM unabhängig sind z.B. die VDR-Aufnahmetimer) generiert werden.

Bei den Temperaturen habe ich vor dem Slash die Ist-Temperatur, danach die Solltemperatur. Es kommen noch Feinschliffe wegen der Nachkommastellen, das liegt an unterschiedlichen eingesetzten Thermostaten. AUSSEN hat natürlich keine Solltemperatur

Fussboden und Heizkörper sind zwei Schaltaktoren, die die Pumpe der Fußbodenheizung und die des Kreislaufs für die Heizkörper steuern. Die FB-Heizung geht bei mir gesteuert von Zeit- und von Außentemperatur an. Die andere Pumpe geht immer dann an, wenn die Summer aller Aktuatorstellungen der Thermostate 20% überschreitet. Da die Thermostate fast nie ganz zu machen, habe ich diese Schwelle definiert, damit die Pumpe nicht fast immer laufen muss sondern nur wenn wirklich Wärme gebraucht wird. Der Wert bei Heizkörper hinter dem Slash ist die aktuelle Summe der Aktuatoren.

Im Bereicht Licht und Fenster habe ich mit Kürzeln gearbeitet. Es sind alle meine Lichter und Fenster zu sehen. Der statische weiße Text hat darüber im Vordergrund ein Datenfeld, was immer rot ist. Da die schrift nicht proportional ist, und ich dnan immer nur die Räume, in denen Licht an ist bzw. das Fenster auf ist, in die Textdatei schreibe, und den Rest mit Leerzeichen auffülle, entsteht der Effekt, dass die Elemente einfach rot werden. Rot bedeutet als Licht an oder Fenster auf (bei Dimmern ist es mir hier egal, wie hell sie sind, jedenfalls sind sie nicht OFF)

Die Waschmaschinen und Trockner-Erkennung läuft über FS20 Master/Slave Schalter. Hierzu habe ich viele Durchläufe beider Geräte mitgeloggt und dann Muster darin erkannt, nach denen sich die verschiedenen Phasen identifizieren lassen. Der Trockner hat z.B. am Ende einen Knitterschutz - d.h. der master-Slave Schalter geht ständig nochmal an und aus. Aber in einem Muster, das man erkennen kann. Dieses tue ich und setze dann die Dummy Variable entweder auf "aus", "fertig" oder "trocknet/wäscht". Der ,Fertig-Zustand wird bei mir außerdem im Netzwerk per SNARL (kleines Notification Tool) eingeblendet, außerdem alx XBMC und VDR-Message auf den Geräten wo das ggf. gerade an ist, weiterhin wird ein LED-Schlauch im WZ auf Blinken geschaltet und ich plane gerade noch den MP3-Funkgong da einzubinden.  Der Fertig-Status kann über verschiedene Taster im Haus bestätigt werden, diese haben für den Moment, wo etwas im Fertig Status ist, eine Sonderfunktion.

Der Status der beiden Fernseher in WOhn/Schlafzimmer wird ebenfalls aus FHEM abgefragt (dazu nutze ich mein selbst entwickeltes Workflow-Modul, was bei mir schon über ein Jahr stabil läuft, aber was ich noch nicht dokumentiert habe und was auch total unsauber entwickelt ist, Threads nutzt, usw) ...die Fernseher sind beides kleine PCs (Zotac ZBOXen) auf denen ein VDR client und XBMC läuft.

vom VDR Server werden über dessen API ebenfalls die als nächstes geplanten Aufnahmen angezeigt.

Soweit einfach mal als kleine Demo/Erklärung!

VG