Yet Another Floorplan YAF

Begonnen von Prof. Dr. Peter Henning, 03 Mai 2013, 11:11:53

Vorheriges Thema - Nächstes Thema

MarcP

Hallo,

ich habe mir YAF mal installiert und finde den Ansatz, im direkten
Vergleich zum regulären Floorplan, ziemlich gut. Sicherlich noch
nicht perfekt, aber ausbaufähig.

Besonders schön ist das dynamische Update der Werte, sowie
die mit der Maus verschiebbaren Widgets sind doch ein erheblicher
Vorteil zum regulären FP.

Ein großes Manko ist die "schwere" Installation. Für einen Laien
sicherlich kaum durchführbar, da die Nachinstallation der benötigten
CPAN Module vergleichsweise schwierig ist.
XML::LibXML hat mich fast zum Wahnsinn getrieben, und ich bin kein
Laie.

Alles in allem ein Framework, das sich, wie ich finde, auszubauen lohnt.

Mit dem Ausbau habe ich für mich mal begonnen, ich habe Widgets
für die FHT80 Heizungssteuerung, den FHTTK Fenstersensor und die
Dummy-Device geschrieben. Mit der Dummy Device zeige ich den
Öffnungsgrad des FHT80 Stellmotors an.

Die Widgets sind sicher kein Ausbund an Programmierkönnen sondern
zum sehr großen Teil auf dem Easylamp Widget basierend, aber sie
funktionieren.

Ich hänge die Perlmodule einfach mal an diesen Beitrag, sowie einen
Screenshot von meinen aktuellen YAF.
Die Module müssen anhand der bestehenden Verzeichnisstruktur in das
YAF Widget Verzeichnis einsortiert werden.


(siehe Anhang / see attachement)


Ich habe mir erlaubt, mal den Grundstein für einen WIKI Artikel zu legen:
http://www.fhemwiki.de/wiki/YAF

Viele Grüße,
Marc

MarcP

Hallo liebe Interessierte,

das FHT80 Widget ist nun auch aktualisiert im SVN zu finden.


(siehe Anhang / see attachement)


(Ich bin mir nicht sicher, ob ich das mit dem Controls File für's Update
richtig gemacht habe. Falls nicht, bitte PN.)

Viele Grüße,
Marc

MarcP

Hallo,

da die Speicherung der Konfiguration in einem XML-File mehrere Probleme mit sich zog, z.B. die komplexe Installation von XML::LibXML, habe ich in Absprache mit den Entwicklern YAF so geändert, das die Konfiguration komplett in der FHEM-Config vorgenommen wird, und auch kein XML::LibXML mehr benötigt wird.

Die neue Version, inklusive eines Fenster-Sensor Widget, befindet sich im Subversion:
https://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/contrib/YAF/
(leider funktioniert das Thirdparty-Update mit dem Link nicht...)

Austauschen muss man nur die Dateien "01_YAF.pm" und "YAFConfig.pm". Eine vorherige Konfiguration im XML File geht leider beim Update verloren.

So sieht das Ganze aus (nicht anders als vorher, übrigens) :

(siehe Anhang / see attachement)


Ansonsten einfach per "define yaf yaf" das Modul aktivieren. Nach dem Definieren der ersten View kann in den Settings des YAF Device der Pfad zum Hintergrund gesetzt werden (das ist jetzt noch "händisch").

Die Konfiguration des "yaf" Device sieht dann so aus:

(siehe Anhang / see attachement)


Die Konfiguration des Widgets ist im Device abgelegt:

(siehe Anhang / see attachement)


Bei Änderungen der Konfiguration muss diese aktuell noch mit dem "save" Kommando (oder dem "Save Config" Menüpunkt) gespeichert werden, ansonsten sind sie beim Neustart des Servers verloren.

Über Tester freuen wir uns sehr!

Viele Grüße,
Marc

Prof. Dr. Peter Henning

Da sollten wir aber noch einmal drüber nachdenken - denn die Konfiguration per XML war ein expliziter Wunsch von mir bei der Definition des Projektes.

Betreffend die Widgets: Hier sollte unbedingt eine andere Benennung eingeführt werden, aus der sich ergibt, dass es sich um Widgets handelt. "fht80.pm" suggeriert sonst, dass dies etwas mit der Ansteuerung des fht80 handelt.

LG

pah

MarcP

Hallo,

die Änderungen sind in Absprache mit den mir genannten Maintainern
Daniel Weisensee und Markus Mangei erfolgt. Daher weiß ich leider
nichts von expliziten Wünschen in Richtung XML.

Ich glaube auch, das das Projekt nicht genutzt werden wird, wenn es
bei der XML Config bleibt.
Man kann das auch schon schön am bisherigen Interesse hier im Forum
ablesen - es geht gegen null.

Zunächst ist diese nicht gut über die etablierte Config-Oberfläche
FHEMWeb einsehbar, zusätzlich gibt es auf den Systemen, auf denen
FHEM eingesetzt wird, erhebliche Probleme mit der Installation der
XML::LibXML .

Für mich als Nutzer ist das System in der "XML-Version" nicht
gut verwendbar.
Oder gibt es da gute Gründe für, die ich gerade nicht erkenne?

Ich will das aber wirklich niemandem aufdrängen, wenn kein Interesse
an der Änderung besteht, forke ich es mir auch gerne.
Für mich ist es in der neuen Version sehr gut und in der Praxis nutzbar.
 
Viele Grüße,
Marc

Johannes

Hallo MarcP,

Ich finde deine Entscheidung genau richtig:

Zitat von: MarcP schrieb am Mi, 24 Juli 2013 09:35Ich glaube auch, das das Projekt nicht genutzt werden wird, wenn es
bei der XML Config bleibt.
Man kann das auch schon schön am bisherigen Interesse hier im Forum
ablesen - es geht gegen null.

Ich bin selbst an libxml gescheitert und hatte einfach keine Lust drauf, Stunden dafür zu investieren.
Also hatte ich damals die Installation von YAF erstmal zur Seite gelegt.
Dein Ansatz gefällt mir, und vor allem, er funktioniert!
Ich habe gerade erstmal ein fhem update auf YAF mit der richtigen URL zu sourceforge gefahren (du hattest noch die alte URL, die sich geändert hat):

update thirdparty http://svn.code.sf.net/p/fhem/code/trunk/fhem/contrib/YAF/ yaf

Damit kommt man auf den aktuellen Stand. Ich habe die URL mal im Wiki auf diese korrigiert.
Anschließend noch ein
define yaf yaf
und FHEM neustart und voila - läuft.

Jetzt muss ich mich erstmal umschauen.
Ansonsten freue ich mich, dass hier weiterentwickelt wird und vor allem auch zugänglicher gemacht wird.
Weiter so!

Grüße,
Johannes

Prof. Dr. Peter Henning

Nun, ich habe gar nichts dagegen, wenn als "frei" veröffentlichte Software in andere Richtungen weiter entwickelt wird. Wo ich allerdings personelle Ressourcen hineinstecke - etwa weitere Projektarbeiten - entscheide ich selbst.

LG

pah


mllerj

Hardware Raspberry Pi mit FHEM

Fehlermeldung :
Saving statefile: done

Backup:

backup done: FHEM-20130730_140034.tar.gz (8125520 Bytes)

File(s) skipped for an update! Size does not correspond:
==> YAFConfig.pm: size from controlfile: 14744 bytes, size after download: 15329 bytes
==> fht80.pm: size from controlfile: 6869 bytes, size after download: 7498 bytes
==> fhttk.pm: size from controlfile: 6095 bytes, size after download: 346 bytes

3 file(s) have been updated:
==> 2013-07-23 20:45:00 FHEM/01_YAF.pm
==> 2013-07-20 16:00:00 FHEM/YAF/www/js/yaf-basics.js
==> 2013-07-20 16:00:00 FHEM/YAF/www/js/yaf-dialogs.js

Update completed!

ein define des modules schlägt fehl :-(

nur zur info bin kein linux profi

MarcP

Hallo,

es hatte sich ein kleiner Fehler in das Controlfile eingeschlichen, nun klappt es wieder.
Bitte beachten, das Perl Modul JSON::XS ist notwendig.

Viele Grüße,
Marc

mllerj

wie ist der get Befehl für das JSON::XS ?

Kann mit den jemand nennen ?

Danke im voraus.

lg Alex

tomster

Müsste:
(sudo) apt-get install libjson-xs-perl

sein. Leider bringt mir FHEM beim Neustart:
ERROR:
Cannot load module YAF

Hab ich was übersehen?

mllerj

den selber Fehler habe ich leider auch ...

meines habe ich gelöst habe mal ein apt-get autoremove gemacht, danach alles deinstallieren lassen.
Jetzt läuft es wieder.

tomster

Ok, im Log steht:

2013.07.30 16:40:26 1: reload: Error:Modul 01_YAF deactivated:
 Can't locate YAF/YAFConfig.pm in @INC (@INC contains: YAF /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl . ./FHEM) at ./FHEM/01_YAF.pm line 34, <$fh> line 24.
BEGIN failed--compilation aborted at ./FHEM/01_YAF.pm line 34, <$fh> line 24.


Es fehlt augenscheinlich YAF/YAFConfig.pm. Die wird wohl bei der thirdparty-Installation nicht downgeladen...

--edit--

Nachdem ich die Datei manuell in's Verzeichnis eingefügt habe, startet YAF jetzt ohne Murren. Gleich ein bissl daran spielen gehen...

tomster

Kurze Frage:

Um mich mal an einem HomeMatic-Widget versuchen zu können, würd ich gern wissen, welche verschiedenen Stati (z.B. on/off, closed/tilt/open, etc.) denn von den Homematic-Devices ausgegeben werden. Hat da jemand eine Übersicht?

--edit--

Ich muss ja zugeben, dass ich weder von Perl, noch von einer irgendwie anders gearteten Programmiersprache eine wirkliche Ahnung habe. Wenn ich mir jedoch das Beispielwidget fs20easylamp.pm so anschaue (und mir einbilde teilweise zu verstehen was da steht), dann scheint es sich um ein reines Status-Widget zu handeln. Es wird also nur der jeweilige Status eines z.B. Schalters, abhängig von der gewählten Refresh-Rate, angezeigt. Faktisch schalten, beispielsweise durch einen Click (oder eben Touch-Click) auf das Widget(-Symbol) kann man (derzeit) damit wohl nicht... Oder ich habe bislang etwas Grundlegendes komplett übersehen?

MarcP

Hallo,

Zitat von: tomster schrieb am Mi, 31 Juli 2013 14:52Kurze Frage:

Um mich mal an einem HomeMatic-Widget versuchen zu können, würd ich gern wissen, welche verschiedenen Stati (z.B. on/off, closed/tilt/open, etc.) denn von den Homematic-Devices ausgegeben werden. Hat da jemand eine Übersicht?

Im Wiki sind viele Beispiele, eventuell ist das hier ein guter Anfangspunkt:
http://www.fhemwiki.de/wiki/HomeMatic

Vielleicht hilft Dir auch schon das Widget, das ich nun gerade eingecheckt habe: "Generic".
Hier kann jedes Device, welches im System definiert ist, ohne spezielles Widget in einer "Basic"-Ansicht eingefügt werden.
Das Widget unterstützt DevStateIcons, verschiedene Readings und verschiedene Attribute als Label.

Die Konfiguration ist leider noch nicht über YAF möglich, sondern über die Eigenschaften im FHEM.

YAF-Eigenschaften sind:

labeltype: Der Name des Attributes, das als Label verwendet werden soll. Standard: fhemname
statetype: Der Name des Readings, das als Status verwendet werden soll. Standard: state
showicon : 0: devStateIcon nicht verwenden.
showlabel: 0: Label nicht anzeigen

Beispiele:

(siehe Anhang / see attachement)

Oben Links: "PRESENCE" device.
Zeigt als Label den "Alias" des Devices an, als Status den "state".
Definiert mit:

define pres_test PRESENCE lan-ping 10.x.x.x
attr pres_test alias Marcus' Android
attr pres_test devStateIcon present:WLAN_Status.1 absent:WLAN_Status.0
attr pres_test yaf_2 id=1,fhemname=pres_test,y_pos=157,x_pos=34,name=generic,showicon=0,labeltype=alias,

In der Config sieht man, das das devStateIcon deaktivert wurde.

Oben rechts: Homematic Wassersensor HM_SEC_WDS
Zeigt als Label den Alias des Devices an, und als Status das jeweilige devStateIcon.
Definiert mit:

define CUL_HM_HM_SEC_WDS_xyz CUL_HM xyz
attr CUL_HM_HM_SEC_WDS_xyz alias WassermelderHeizung
attr CUL_HM_HM_SEC_WDS_xyz devStateIcon dry:wasseralarm wet:wasseralarm_rot damp:wasseralarm_rot
attr CUL_HM_HM_SEC_WDS_xyz yaf_2 id=5,fhemname=CUL_HM_HM_SEC_WDS_xyz,x_pos=324,y_pos=139,name=generic,labeltype=alias,


Unten links: FHTTK Fenstersensor
Zeigt nur das devStateIcon des jeweiligen Status an.
Definiert mit:

define CUL_FHTTK_xyz CUL_FHTTK xyz
attr CUL_FHTTK_xyz devStateIcon Closed:signal_Fenster_Offen.off Open:signal_Fenster_Offen.on
attr CUL_FHTTK_xyz yaf_2 id=4,fhemname=CUL_FHTTK_xyz,x_pos=27,y_pos=261,name=generic,showlabel=0


Unten rechts: FHT80 Heizungssteuerung
(Mehr als Beispiel)
Zeigt den Kommentar des Devices als Label an und das Reading "temperature" als Status.
Definiert mit:

define FHT_xyz FHT xyz
attr FHT_xyz comment Wohnzimmer
attr FHT_xyz yaf_2 id=6,fhemname=FHT_xyz,x_pos=263,y_pos=303,name=generic,labeltype=comment,statetype=temperature,



Für die reine Anzeige ist damit schon einiges abgedeckt.
Für die Steuerung von Devices oder für spezielle Anzeigen sind natürlich nach wie vor "spezialisierte" Widgets notwendig.

Die Auwahlliste beim Erstellen kann etwas lang werden, dazu ist aber die Autocomplete-Funktion des Dropdownfeldes sehr praktisch.

Viele Grüße,
Marc


---edit zu deinem Edit oben---
Doch, schalten geht über die Methode fs20easylamp_set_lamp_status()