neue Features: defaultvalue, readingList, Ereignisfilter, Attribut checkall

Begonnen von Damian, 05 Oktober 2016, 19:58:14

Vorheriges Thema - Nächstes Thema

Muschelpuster

#60
Zitat von: Ellert am 09 November 2016, 12:38:03
Das Bild, wie DOIF im Frontend aussehen kann, habe ich mal angehängt.
Genau das finde ich Klasse! Nicht ein Frontend-Modul und ein aktives Modul, die nicht kompatibel sind, sondern einfach ein Modul. Danke für Eure Mühe, die Ihr da rein steckt.
Ich habe mir gerade mal das Beispiel aus dem Wiki importiert, um es in Ruhe zu genießen. Übrigens auch eine klasse Idee, mit den Labor-Beispielen!
Zusatzfrage: Ist es auch möglich die eingestellten Zeiten zu verändern. Konkret möchte ich gerade täglich/nächtlich die Startzeit 5 Minuten vor- und die Endzeit 5 Minuten zurückverlegen um täglich 10 Minuten mehr Laufzeit zu erreichen.

nachfragende Grüße
Niels
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

Ellert

ZitatIst es auch möglich die eingestellten Zeiten zu verändern. Konkret möchte ich gerade täglich/nächtlich die Startzeit 5 Minuten vor- und die Endzeit 5 Minuten zurückverlegen um täglich 10 Minuten mehr Laufzeit zu erreichen.

Du kannst auf + klicken und mit den Schiebereglern die Zeit einstellen. Mit klick auf - werden die Zeiten übernommen.

Muschelpuster

Ja klar, aber ich will das automatisieren, da wir den täglichen manuellen Eingriff nicht konsequent hin bekommen. Ein setstate wie beim RAW-Import geht ja leider nicht.

automatisierte Grüße
Niels
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

Ellert


_Markus_

Hallo,

tolle neue Features. Ich würde damit gerne meine DOIFs etwas standardisieren und auf der Tablet UI bearbeiten können. Dazu müsste ich aber die Werte der Readings auswerten können.

Bsp:

([$SELF:P_condition:0])
   (set Esszimmer on)
DOELSE
   (set Esszimmer off)


Im Reading P_condition würde ich gerne eine beliebige Condition angeben können, bspw. $we. Ich habe schon geschweifte und spitze Klammern eingesetzt, jedoch bisher ohne Erfolg. Übersehe ich irgendetwas, oder kann man die Readings in DOIF derzeit nicht "evaluieren"?

Dankbar für einen kleinen Tipp.

Vielen Dank!
Markus

Ellert

Zitat von: _Markus_ am 27 November 2016, 16:47:47
Hallo,

tolle neue Features. Ich würde damit gerne meine DOIFs etwas standardisieren und auf der Tablet UI bearbeiten können. Dazu müsste ich aber die Werte der Readings auswerten können.

Bsp:

([$SELF:P_condition:0])
   (set Esszimmer on)
DOELSE
   (set Esszimmer off)


Im Reading P_condition würde ich gerne eine beliebige Condition angeben können, bspw. $we. Ich habe schon geschweifte und spitze Klammern eingesetzt, jedoch bisher ohne Erfolg. Übersehe ich irgendetwas, oder kann man die Readings in DOIF derzeit nicht "evaluieren"?

Dankbar für einen kleinen Tipp.

Vielen Dank!
Markus

Hast Du schon mal (eval("[$SELF:P_condition,0]")) versucht?

Damian

Zitat von: Ellert am 27 November 2016, 17:49:46
Hast Du schon mal (eval("[$SELF:P_condition,0]")) versucht?

ohne Anführungszeichen wird es funktionieren, wenn in P_condition reines Perl drin steckt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

_Markus_

Das werde ich nachher mal versuchen. Allerdings ziele ich auf mehr als nur reines Perl ab. Ich würde gerne eine beliebige DOIF condition in ein Reading schreiben und dann mit dem DOIF auswerten.

Damian

Zitat von: _Markus_ am 27 November 2016, 19:15:30
Das werde ich nachher mal versuchen. Allerdings ziele ich auf mehr als nur reines Perl ab. Ich würde gerne eine beliebige DOIF condition in ein Reading schreiben und dann mit dem DOIF auswerten.

die DOIF-condition ist bis auf Angaben in eckigen Klammern: Perl, dh. im Reading darf man dann keine Angaben in eckigen Klammern angeben.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Muschelpuster

Zitat von: Ellert am 27 November 2016, 12:50:31
Warum möchtest Du setstate nutzen? Es geht aber.
Problem saß vor der Tastatur. Ich hatte viel zu viel gespielt. Aber ich habe da noch was Anderes, was mir nicht ganz ok erscheint. Ich habe mein DOIF etwas angepasst damit es alle aktivieren und deaktivieren können:defmod di_Test_enable DOIF ([08:00])
attr di_Test_enable devStateIcon disabled:general_aus_fuer_zeit:enable .*:general_an_fuer_zeit:disable
attr di_Test_enable room DOIF_Labor
Das funktioniert auch nach wie vor prima, bis ich setList benutze:defmod time_switch_Labor2 DOIF ([[$SELF:P_mybegin,"00:00"]])\
attr time_switch_Labor2 alias Schaltuhr2
attr time_switch_Labor2 devStateIcon disabled:general_aus_fuer_zeit:enable .*:general_an_fuer_zeit:disable
attr time_switch_Labor2 group Labor: Zeitsteuerung abschaltbar
attr time_switch_Labor2 readingList P_mybegin P_myend
attr time_switch_Labor2 room DOIF_Labor
attr time_switch_Labor2 setList P_mybegin:time P_myend:time
attr time_switch_Labor2 webCmd P_mybegin:P_myend
Jetzt kann ich mein DOIF prima deaktivieren, nur nicht wieder aktivieren. Selbst mit set time_switch_Labor2 enable geht nix mehr. Soll das so und ich verstehe nur den tieferen Sinn dahinter nicht?

deaktiviert Grüße
Niels
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

Ellert

Zitat von: Muschelpuster am 27 November 2016, 20:59:07
Problem saß vor der Tastatur. Ich hatte viel zu viel gespielt. Aber ich habe da noch was Anderes, was mir nicht ganz ok erscheint. Ich habe mein DOIF etwas angepasst damit es alle aktivieren und deaktivieren können:defmod di_Test_enable DOIF ([08:00])
attr di_Test_enable devStateIcon disabled:general_aus_fuer_zeit:enable .*:general_an_fuer_zeit:disable
attr di_Test_enable room DOIF_Labor
Das funktioniert auch nach wie vor prima, bis ich setList benutze:defmod time_switch_Labor2 DOIF ([[$SELF:P_mybegin,"00:00"]])\
attr time_switch_Labor2 alias Schaltuhr2
attr time_switch_Labor2 devStateIcon disabled:general_aus_fuer_zeit:enable .*:general_an_fuer_zeit:disable
attr time_switch_Labor2 group Labor: Zeitsteuerung abschaltbar
attr time_switch_Labor2 readingList P_mybegin P_myend
attr time_switch_Labor2 room DOIF_Labor
attr time_switch_Labor2 setList P_mybegin:time P_myend:time
attr time_switch_Labor2 webCmd P_mybegin:P_myend
Jetzt kann ich mein DOIF prima deaktivieren, nur nicht wieder aktivieren. Selbst mit set time_switch_Labor2 enable geht nix mehr. Soll das so und ich verstehe nur den tieferen Sinn dahinter nicht?

deaktiviert Grüße
Niels
Du hast die 2. Regex fürs Icon zu weit gefasst, disabled matched auch.

Muschelpuster

#71
Zitat von: Ellert am 27 November 2016, 22:40:56Du hast die 2. Regex fürs Icon zu weit gefasst, disabled matched auch.
Ja, aber das matched doch von links nach rechts und durchsucht den Rest hinter einem Match nicht mehr, oder?
Es funktioniert ja auch einwandfrei, solange ich kein setList im Spiel habe/hatte. Aber jetzt funktioniert es auch mit der Liste ???
Nun ja, ich passe das mal Deinen Hinweisen entspr. an:attr time_switch_Labor2 devStateIcon attr time_switch_Labor2 devStateIcon disabl.*:general_aus_fuer_zeit:enable .*:general_an_fuer_zeit:disable .*rro.*:icoTool

geordnete Grüße
Niels
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

JoeALLb

Hi,

wow, setList ist ein tolles Feature, vielen Dank! Das spart mir viele dummy-devices!!

Ein Wunsch jedoch:
A-Z_<persistent user defined readingname>
ist für mich höchst unschön, wenn meine Heizungs-Anschaltzeit plötzlich einen Prefix bekommt.

Wie wärs, mit einem Attribute: "userStaticReadings" oder nur "staticReadings"?
attr xx staticReadings on|off|Heizungsmodus
ich denke, das wäre nicht unlogischer und sowas wird ja an anderer Stelle auch schon verwendet.

Noch ein Punkt: Sollte nicht der State von "initialized" geändert werden, nachdem ein Reading per set aktualisiert wurde?
Ich nutze initialized, um bestimmte defaultwerte zu überprüfen, diese Überprüfung ist später nicht mehr notwendig, daher würde ich hier eine Änderung vorschlagen.


Edit 1: Rechtschreibfehler, format
Edit2: Nachtrag state
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

_Markus_

@Damian: Danke für die Antwort.

Könnte man im Modul dafür sorgen, dass ausgewertete Readings wiederum evaluiert werden, so dass man auch Eckige Klammern in Readings spezifizieren könnte?

Zum Beispiel indem man in der sub ReplaceReadingEvalDoIf
$block=$ret;
ersetzt durch:
$block=ReplaceReadingEvalDoIf($hash, $ret, 0)

Siehst du da ungewünschte Seiteneffekte? Kenne deinen Code nicht wirklich gut...

BG! Markus

Damian

Zitat von: _Markus_ am 28 November 2016, 11:30:33
@Damian: Danke für die Antwort.

Könnte man im Modul dafür sorgen, dass ausgewertete Readings wiederum evaluiert werden, so dass man auch Eckige Klammern in Readings spezifizieren könnte?

Zum Beispiel indem man in der sub ReplaceReadingEvalDoIf
$block=$ret;
ersetzt durch:
$block=ReplaceReadingEvalDoIf($hash, $ret, 0)

Siehst du da ungewünschte Seiteneffekte? Kenne deinen Code nicht wirklich gut...

BG! Markus

Die Funktion wird an verschiedenen Stellen benutzt, mal mit, mal ohne Auswertung, daher kann ich die Folgen z. Zt. gar nicht abschätzen.

Was steht den konkret in deinem Reading?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF