Hauptmenü

Übersichlichkeit in cfg

Begonnen von djhans, 31 Januar 2014, 12:14:52

Vorheriges Thema - Nächstes Thema

djhans

Hallo Rice,
super! Besten Dank für die Erklärung. Jetzt bin ich ein Stückchen weiter. Das sind Grundlagen und Zusammenhänge die man wissen muss. Davon gibt es sicherlich eine ganze Reihe. Gibt es kein zusammenhängendes Werk, wo diese Dinge beschrieben sind?

Lernen kann man nur, wenn man Übungsmaterial und Bücher hat, in denen die Dinge beschrieben sind. Natürlich erwarte ich hier keine fertigen Lösungen, ich will halt die Grundlagen begreifen.

Vor 10 Jahren habe ich einen Teil meiner Haussteuerung über die CControl von Conrad verwirklicht. Auch da musste ich mich erst reindenken, aber die Syntax des ProgrammCodes war deutlich besser zu lesen und zu verstehen. Das funktioniert bei fhem nicht mehr und das macht die Sache so schwer für mich..

Das viel zitierte "http://fhem.de/Heimautomatisierung-mit-fhem.pdf" ist sicherlich eine Pflichtlektüre, aber erklärt m.E. nicht die Grundlagen und geht nicht weit geneug auf die Syntax des Codes ein.

Ich habe bislang noch keinen einzigen Aktor den ich ansteuern kann, sondern spiele derzeit mit Fritzbox, Dreambox und Sonos um zu verstehen, wie hier programmiert wird. Eigentlich wollte ich anfangen Raum für Raum mit enocean auszustatten, aber ich bin mir nicht mehr sicher, ob das wirklich zum Erfolg führt, denn ich kriege es noch nicht mal hin, ein Script zu schreiben, was den Sonos nach meinen Vorstellungen ansteuert....

Also: Welche Werke der fhem-Literatur soll ich mir am Besten reinziehen? Oder sollte ich doch besser erst mit einem Schalter und einer Lampe anfangen....
Und was ist mit perl! Ist das die Vorraussetzung ùm fhem zu vestehen?

Danke und Gruß,
Christian


Puschel74

Hallo,

tja, ausser das Einsteiger.pdf (bald in einer überarbeiteten Version) Wiki, commandref und Forum gibt es (noch) nichts.
Insbesondere keine Bücher in denen beschrieben wird wie FHEM "funktioniert".
Über kurz oder lang wirst du aber über ein "Grundlagenbuch für Perl" nicht umhin kommen.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

herman

#17
Konfig und Code zu strukturieren ist m.E. sinnvoll und erstrebenswert.

Probiere es so rum:

# Sound-Einstellung für alle Sonoskomponenten
#
# wird 5min verzögert ausgeführt
#
# Bad, Play 1
#
define a5 at +00:05:00 \
set Sonos_Bad Volume 5;;\
set Sonos_Bad Treble 10;;\
set Sonos_Bad Bass 3;;\
set Sonos_Bad Balance 0;;\
set Sonos_Bad Loudness 1;;
#


oder verpacke das ganze in Funktionen, z.B. in 99_mySonosUtils.pm


# Sound-Einstellung für alle Sonoskomponenten
#
# wird 5min verzögert ausgeführt
#
# Bad, Play 1
#
define a5 at +00:05:00 {InitSonos()}


in 99_mySonosUtils.pm (analog zu 99_myUtils.pm erstellen) kannst Du dann Funktionen mit Kommentaren erstellen:


sub InitSonos()
{
#
# Bad, Play 1
#
    {fhem("set Sonos_Bad Volume 5")}
    {fhem("set Sonos_Bad Treble 10")}
    {fhem("set Sonos_Bad Bass 3")}
    {fhem("set Sonos_Bad Balance 0")}
    {fhem("set Sonos_Bad Loudness 1")}
#
# usw.
}


Es gibt sicherlich noch andere Varianten. Keine Ahnung, ob o.g. eine gute ist. So mache ich es.

Grüße,
Merhan


Puschel74

Hallo,

wenn du das ganze jetzt noch mit Code-Tags versehen könntest würde auch jeder auf den ersten Blick sehen was Code und was normaler Text ist.
Danke.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

herman

Zitat von: Puschel74 am 31 Januar 2014, 17:41:16
Hallo,

wenn du das ganze jetzt noch mit Code-Tags versehen könntest würde auch jeder auf den ersten Blick sehen was Code und was normaler Text ist.
Danke.

Grüße

Wieder was gelernt. Danke.

djhans

Hallo,
nochmals herzlich Dank an alle für die Anregungen. Ich habe jetzt auch etwas gelernt und es hat sogar funktioniert!  :)
global:INITIALIZED define a1 at +00:05:00 set Sonos_Bad Play

als Befehl im Webinterface abgesetzt, die Config gespeichert, fhem neu gestartet und nach 5min ging der Sonos im Bad an....
das ist doch das, was ich wollte. Jetzt muss ich halt noch die Funktionen bauen..

@puschel:
kannst Du ein Buch zu Perl empfehlen?

djhans.


Puschel74

Hallo,

Zitat@puschel:
kannst Du ein Buch zu Perl empfehlen?
Leider nicht - ich hab meines in der Firma liegen und jetzt bereits zum Glück Wochenende.
Aber nach Eingabe von "Perl Buch" in das Suchfeld hab ich 21 Treffer bekommen.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Starkstrombastler

Bearbeiten im Frontend bedeuted: im Raum das device anklicken und dann auf "Def". Alle Änderungen durchführen und schließlich sichern.
Habe ich anfangs auch nichr geblickt!
IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200

UliM

#23
Huhu,
vier cents :)

- Perl-Buch: "Einführung in Perl", Schwarz, Phoenix, Foy - O'Reilly-Verlag, ISBN 978-3-89721-887-1. Für ein Sachbuch seeehr unterhaltsam geschrieben. In Perl MUSS man sich m.E. ein wenig einarbeiten - ich hab ungefähr ein drittel gelesen und dann floorplan.pm zusammengeschustert :)

- Auch in regexp muss man sich einarbeiten, siehe zB http://www.troubleshooters.com/codecorn/littperl/perlreg.htm

- Config strukturieren: Ich bin mittlerweile komplett vom Bearbeiten der cfg mittels Editor weg. Geräte (auch virtuelle wie at/notify) neu anlegen durch absetzen des define-Befehls via Kommandofeld des Webfrontends, Ändern von Attributen etc über den Detailscreen im Webfrontend, und ab und zu via Kommandofeld "save". Ich kriege damit alles hin was ich brauche, kann autocreate ohne Ärger benutzen und habe keinen Stress mit rereadconfig oder zerquirlten includes. Alle notifies, die mehr als 2 Zeilen Code brauchen, packe ich in Routinen in 99_myUtils.pm . Wie der Inhalt der fhem.cfg aussieht ist mir wurscht - die Windows-Registry kümmert mich ja auch nicht.
Ist aber alles Geschmackssache.

- Zum _technischen_ Einstieg in fhem gibt es http://www.fhemwiki.de/wiki/DevelopmentModuleIntro - das ist aber auch wieder nix für den geneigten Poweruser, sondern wendet sich eher an den, der Module erstellen will und dazu die internen technischen Strukturen und Mechanismen von fhem verstehen muss. Also das andere Extrem zum Einsteiger-pdf. Dazwischen gibt es m.W. noch nix.

- Für ein Heranführen an fhem in Kombi mit Perl-Befehlen über das hinaus, was bersits im Einsteieger-pdf steht, fehlt mir noch ein schlüssiges Konzept, denn die Erwartung des Lesers orientiert sich m.E. immer an seiner eigenen zu bewältigenden Aufgabenstellung. Da diese Ausfgabenstellungen sooo unterschiedlich sind, ist mir noch nicht eingefallen, wie man das sinnvoll aufbauen kann. Wäre dann die nächste Erweiterung des Einteiger-pdf - Und irgendwann ist für mich dann der Aufwand auch ehrlich gesagt so groß, dass ich das mal kostenpflichtig machen müsste. Jetzt kommt erst mal ne Version mit Erweiterungen um HomeStatus/Anwesenheitserkennung, Heizungssteuerung, Multimedia, Ansatz zu http-Steuerung und erweiterter Erklärung zur FHEMWEB-Konfiguration. Weiterhin kostenlos :)

So long,
Gruß, Uli
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

djhans

Hallo,
vielen Dank für die Tipps. Dann werde ich mir das Buch mal besorgen....

Ich möchte hier noch mal ausdrücklich sagen, dass ich es absolut klasse finde, dass es Leute gibt, die Ihre Projekte der Allgemeinheit kostenlos zur Verfügung stellen und dafür auch noch Hilfestellung geben!

Ich finde das fhem Projekt super und hoffe, dass eines Tages der Groschen bei mir fällt und ich fhem richtig nutzen kann.... :-)

Danke und Gruß,
Christian


djhans

Hallo,
ich noch einmal! Ich habe immer noch keine gute Idee, wie ich das umsetze.

define Sonos_Init notify global:INITIALIZED define Init_Sonos_Sound at +00:05:00 include Sonos/Sonos_Sound.cfg\

bewirkt, dass nach 5min  die Datei Sonos_Sound geladen wird. Der Inhalt dieser Datei soll dann eigentlich direkt abgearbeitet werden. Aber wie stelle ich das an, ohne ein weiteres define? Die Set-Sonos-Befehle gibt es eben erst nach einer gewissen Zeit.
Ich brauche noch einmal einen Tipp!

#
#
# Wohnzimmer, Connect:Amp, SUB
#
define Sound_Wohnzimmer at +00:00:30 \
set Sonos_Wohnzimmer Volume 5;;\
set Sonos_Wohnzimmer Treble 10;;\
set Sonos_Wohnzimmer Bass 5;;\
set Sonos_Wohnzimmer Balance 0;;\
set Sonos_Wohnzimmer Loudness 1;;\
#
# Schlafzimmer, 2 x Play 1, Stereopaar
#
define Sound_Schlafzimmer at +00:00:30 \
set Sonos_Schlafzimmer Volume 3;;\
set Sonos_Schlafzimmer Treble 10;;\
set Sonos_Schlafzimmer Bass 3;;\
set Sonos_Schlafzimmer Balance 0;;\
set Sonos_Schlafzimmer Loudness 1;;\
#


Danke,
djhans

herrmannj

Hi,

bis zum notify um dem at ist alles richtig. Nur um alles in der Welt, warum dann eine cfg laden (die dann nochmal ein at erstellen soll ???) ?  ;-)

Die cfg direkt zu bearbeiten ist eine ganz schlechte Idee, gewöhn Dir das blos gleich wieder ab. Erstelle ein at im web interface - da kommt dann alles rein was Du jetzt über Deine include machen möchtest.

Später (!) kannst Du dann komplexere Dinge in eine 99_..Utils auslagern.

vg
Jörg

djhans

Hi,
danke, aber das Problem ist, dass ich innerhalb des defines  keine Kommentare verwenden kann und es dann zu unübersichtlich wird...

djhans

betateilchen

Zitat von: djhans am 03 Februar 2014, 22:04:55
Hi,das Problem ist, dass ich innerhalb des defines  keine Kommentare verwenden kann

das ist eigentlich kein Problem, weil man die defines normalerweise in der Form, wie sie eingegeben wurden, ohnehin nie wieder zu Gesicht bekommt.

Merke: Nur Anfänger schauen in die fhem.cfg - aber diese Zwangsneurose geht irgendwann vorbei, spätestens, wenn man die Nutzlosigkeit dieses Unterfangens verstanden hat. 8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

herrmannj

Zitatdanke, aber das Problem ist, dass ich innerhalb des defines  keine Kommentare verwenden kann und es dann zu unübersichtlich wird...
wie Du möchtest ;-)

Vielleicht möchtest Du ja trotzdem mal einen Blick auf die Attribute dort werfen: room, group, alias und comment.

ZitatMerke: Nur Anfänger schauen in die fhem.cfg - aber diese Zwangsneurose geht irgendwann vorbei, spätestens, wenn man die Nutzlosigkeit dieses Unterfangens verstanden hat. 8)
<- gaaanz genau  8)

vg
jörg