DOIF neue Features: Generalisierung, $DEVICE, $EVENT, Attribut notexist

Begonnen von Damian, 28 Dezember 2015, 22:06:42

Vorheriges Thema - Nächstes Thema

Damian

Zitat von: AndreasHH am 30 Dezember 2015, 01:03:59
Moin,

Vielen Dank für Eure Hilfe.
Habe es wie folgt gelöst:


define di_FHT_desired DOIF (["FHT_:desired-temp"] and [$DEVICE:desired-temp] > 11)\
( { my $Zieltemp=ReadingsVal("$DEVICE","desired-temp","18") ;;;;\
    fhem ("set $DEVICE_Zieltemp $Zieltemp")})


Würde mEn mit $EVTPART kürzer und übersichtlicher sein.
Möglicherweise habe ich aber auch nur nicht einen geschickteren Weg gefunden.

Gruss

Andreas

Du willst doch nicht etwa wieder mit den Perl-Konstruktionen anfangen, wenn vier Semikolons nicht genug wäre ;)


define di_FHT_desired DOIF (["FHT_:desired-temp"] and [$DEVICE:desired-temp] > 11)
  (set $DEVICE_Zieltemp [$DEVICE:desired-temp])



Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ujaudio

Ich erlaube mir hier zwischendurch mal ein ganz großes Lob an die Macher von DOIF auszusprechen. Man kann damit wunderbar einfache Konstrukte schreiben, die ansonsten nur mühsam zu programmieren wären. Ich habe an der Zeitsteuerung für meine elektrische Weihnachtsbeleuchtung gebastelt, zuerst mit gefühlt unendlich vielen "at" und darin enthaltenen"if..elsif...", irgendwann habe ich dann aufgegeben und mich entschieden mal die commandref zu DOIF zu lesen (zum x-ten Male übrigens). Als Ergebnis komme ich nun mit wenigen Zeilen Code und 2 Attributen aus. Das zeigt, wie praxisgerecht das gemacht wurde. Der Preis dafür: quasi eine weitere Syntax lernen.

Keine Kritik, sondern ur eine Frage: warum sind die vielen guten Beispiel in der Commandref und nicht im Wiki geschrieben? Da ich mittlerweile immer beides lese, ist es letztendlich egal, aber gefühlsmäßig würde ich Beispiele immer im Wiki suchen, während die Commandref nur die "trockene" Theorie beschreibt - und ggf. auf das Wiki verweist  :)

Also nochmals Danke und eine guten Rutsch!
Einen lieben Gruß
Jürgen

Damian

Zitat von: ujaudio am 31 Dezember 2015, 11:45:06

Keine Kritik, sondern ur eine Frage: warum sind die vielen guten Beispiel in der Commandref und nicht im Wiki geschrieben? Da ich mittlerweile immer beides lese, ist es letztendlich egal, aber gefühlsmäßig würde ich Beispiele immer im Wiki suchen, während die Commandref nur die "trockene" Theorie beschreibt - und ggf. auf das Wiki verweist  :)

Als ich mit dem Modul angefangen habe, war die Doku noch kürzer. Im Laufe der Zeit ist sie gewachsen. Mir war vom Anfang an wichtig jede Funktionalität des Moduls immer mit Hilfe von mir sorgfältig ausgewählten Beispiele zu erklären. Dieses Konzept scheint aufzugehen, sonst wäre das Modul nicht so erfolgreich. Denn man muss bedenken, dass hier die meisten nicht Informatiker und auch nicht Softwareentwickler sind. Doku die an diese Zielgruppe gerichtet wäre, würden hier viele nicht gut verstehen können.

Wiki-Beiträge kann jeder ergänzend erstellen, ich möchte dagegen nur eine Quelle mit gut ausgewählten Beispielen pflegen und auf dem aktuellen Stand halten und nicht mehrere.

ZitatDas zeigt, wie praxisgerecht das gemacht wurde

Das untermauert meine Vorgehensweise, zu jedem Feature, welches ich mir ausgedacht habe, gehört ein praxisgerechter Anwendungsfall (den ich bereits während der Entwicklung im Hinterkopf habe), nachdem man nicht lange suchen sollte.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

CoolTux

Hallo Damian,

Seit gestern benötige ich Die erweiterten Funktionen Deines DOIF's. Ich möchte auf alle TempFeuchtSensor* triggern lassen. Laut Deiner Erklärung wäre das dann


["^TempFeuchtSensor":temperature]


Ist das in etwa so richtig? Geht eigentlich auch ein


["^Heizungsthermostat.*._Clima":desired-temp]


Um auf alle Climakanäle meiner Thermostate zu Triggern? Ich habe die Events nicht in "" genommen weil ich da keine RegEx brauchem. Ist das richtig so?




Grüße
Leon
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Damian

Zitat von: CoolTux am 03 Januar 2016, 14:57:13
Hallo Damian,

Seit gestern benötige ich Die erweiterten Funktionen Deines DOIF's. Ich möchte auf alle TempFeuchtSensor* triggern lassen. Laut Deiner Erklärung wäre das dann


["^TempFeuchtSensor":temperature]


Ist das in etwa so richtig? Geht eigentlich auch ein


["^Heizungsthermostat.*._Clima":desired-temp]


Um auf alle Climakanäle meiner Thermostate zu Triggern? Ich habe die Events nicht in "" genommen weil ich da keine RegEx brauchem. Ist das richtig so?

Wenn "Clima" ein Teil des Devicenamens ist, ja. Der Punkt hinter dem Sternchen dürfte überflüssig sein. Die erste Angabe ist auch ok.

Edit: Allerdings muss die zweite Angabe auch noch innerhalb der Anführungszeichen sein: also:

["^TempFeuchtSensor:temperature"]

und
["^Heizungsthermostat.*_Clima:desired-temp"]

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

cruser1800

@Damian

Ich habe mal die Batteriewarnung probiert. Nun bekomme ich aber im DOIF folgfende Fehlermeldung:

error: Wrong timespec ":batterylow": either HH:MM:SS or {perlcode}

Ist etwas in deinem Beispiel noch zu ändern?

Danke Lutz

Damian

Zitat von: cruser1800 am 03 Januar 2016, 16:03:05
@Damian

Ich habe mal die Batteriewarnung probiert. Nun bekomme ich aber im DOIF folgfende Fehlermeldung:

error: Wrong timespec ":batterylow": either HH:MM:SS or {perlcode}

Ist etwas in deinem Beispiel noch zu ändern?

Danke Lutz

Dann hast du wohl nicht die neue Version bei dir aktiv.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

cruser1800

Ich dachte mit dem Update von Heute war die Änderung schon mit drin! Kopiere wieder die alte Version rein!

Danke

Damian

Zitat von: cruser1800 am 03 Januar 2016, 16:45:06
Ich dachte mit dem Update von Heute war die Änderung schon mit drin! Kopiere wieder die alte Version rein!

Danke

Nein, das war nur ein bugfix. Die neue muss sich erst mal bewähren :)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Zitat von: Damian am 03 Januar 2016, 17:03:38
Nein, das war nur ein bugfix. Die neue muss sich erst mal bewähren :)

Ich habe den bugfix für die neue Version nachgezogen. Sie befindet sich im ersten Post.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

CoolTux

Hallo Damian,

Vielen Dank für Deine Antwort. Ich schaue mir das dann mal Morgen in Ruhe an. Und vielen vielen Dank für Dein Modul. Das ist mega Top.


Grüße
Leon
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

cruser1800

Hallo Domain,

Fehlermeldungen sind weg. Mit

trigger Haustuer battery: low

wollte ich jetzt testen. Es reagiert aber leider nicht. Steht weiter auf initialized. Habe das Beispiel wie vorne beschrieben kopiert.

Kannst du mir mal auf die Sprünge helfen!

Danke

Lutz

CoolTux

Das trigger funktioniert so nicht. trigger an sich geht wohl führt aber nicht zum gewünschten Ergebniss, nämlich zum ausführen des DOIF's



Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

cruser1800

Danke für die Antwort.

Wie kann ich jetzt das Programm testen? Bis mal wieder eine Batterie leer geht habe ich es vergessen was ich wollte!  ;)

CoolTux

Ich wüsste da nur die Holzhammermethode, von Hand ins Reading ein Low schreiben.

setreading Thermostat battery low

Ist aber nicht gerade ne gute Methode
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net