Hauptmenü

DOIF-Anfrage

Begonnen von oldscout, 27 Juli 2023, 18:19:54

Vorheriges Thema - Nächstes Thema

oldscout

Hallo liebe Gemeinde,
ich bin auf der Suche nach einer Lösung im DOIF-Device.
Ausgangslage:
In einem dummy-state habe ich binär die Wochentage als on/off hinterlegt. Also So Bit0 on oder off bis Sa Bit6 on oder off, die Bits werden einzeln per Fhem-Weboberfläche (setList+notify) gesetzt, das funktioniert.
Jetzt möchte ich im DOIF testen welcher Wochentag (0-6) aktuell ist und dies mit einem Bit-Vergleich (gesetzt oder nicht) aus dem Dummy steuern.
Ich komme nicht auf die Lösung, den Check vor dem Auslösen zu starten. In dem Dummy sind die Wochentage zusätzlich mit on oder off als Readings gesetzt (wegen der Lesbarkeit).
Habt Ihr irgendeine Idee dazu?
Danke.
FHEM 5.8 auf Intel Celeron CPU
HM-.*, 1-Wire DS18B20, HMLAN, HMUSB, Arduino Uno, ESP8266, Shelly, Tasmota, Enigma2, FB7490, MySql-DB,Unifi, RaspiCCU

rabehd

Du kannst Wochentage ein- und ausschalten? Wahnsinn!

ZitatJetzt möchte ich im DOIF testen welcher Wochentag (0-6) aktuell ist
Da gibt es doch einfache Abfragen, ich verstehe den Sinn nicht.
Auch funktionierende Lösungen kann man hinterfragen.

oldscout

ja, wenn man zb heute gleich Tag 4 ansetzt, will ich prüfen ob Bit 4 gesetzt ist oder nicht.
Hintergrund ist eine tageweise Steuerung, die per Oberfläche einstellbar ist, ohne jedesmal den Code anfassen zu müssen.
Natürlich kann man auch 7 Verschachtelungen einbauen, das ist aber nicht das Ziel.
Bin auch für andere Ideen offen....
FHEM 5.8 auf Intel Celeron CPU
HM-.*, 1-Wire DS18B20, HMLAN, HMUSB, Arduino Uno, ESP8266, Shelly, Tasmota, Enigma2, FB7490, MySql-DB,Unifi, RaspiCCU

betateilchen

Du kannst doch einfach $wday verwenden, da steht heute 4 drin.
Damit weisst Du, dass Du das 4. Bit prüfen musst.

https://www.net-cry.de/perl/the-bitwise-operators

Aber ich wette eine Tüte Popcorn, dass es für Deine Aufgabe eine viel einfachere Lösung gibt. Nur habe ich die Aufgabe und deren Sinn noch nicht verstanden.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

oldscout

hier mal ein Screenshot der Steuerung meiner Beregnung:
Dort kann ich auswählen welche Zeit an welchen Tagen, bisher habe ich nur die Zeit drin, nun soll der Tag eben noch mit ausgewertet werden, an dem der Regner beregnen soll.
Und dazu soll eine flexible Lösung rein.
Im Screen3 sind die möglichen Readings mit verwendbar, je Wochentag und die Binärzahl dazu im State.
Das ganze muß ja mit als Bedingung ins DOIF-Device.
Ich komme einfach nicht auf eine Idee....
FHEM 5.8 auf Intel Celeron CPU
HM-.*, 1-Wire DS18B20, HMLAN, HMUSB, Arduino Uno, ESP8266, Shelly, Tasmota, Enigma2, FB7490, MySql-DB,Unifi, RaspiCCU

betateilchen

#5
Mit DOIF kenne ich mich nicht aus, sowas kommt mir nicht ins Haus.
Aber für DOIF gibt es ein eigenes Unterforum, da wäre Deine Frage sicher besser aufgehoben.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

oldscout

#6
Würdest/Könntest Du diesen Beitrag bitte dahin verschieben? Das Unterforum kannte ich noch nicht, ist ja als Neu markiert.
danke aber trotzdem.

habe es selber verschoben, vielleicht kann ja hier einer einen Tipp geben, wäre schön...
FHEM 5.8 auf Intel Celeron CPU
HM-.*, 1-Wire DS18B20, HMLAN, HMUSB, Arduino Uno, ESP8266, Shelly, Tasmota, Enigma2, FB7490, MySql-DB,Unifi, RaspiCCU

Damian

Du kannst zu deinem Zeittrigger eine Und-Verknüpfung mit der Abfrage des Readings und dem Wochentag verknüpfen:

[Zeit] and ([$SELF:Mo] eq "on" and $wday=1 or [$SELF:Di] eq "on" and $wday=2 or ...
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

betateilchen

Zitat von: oldscout am 28 Juli 2023, 18:22:02Das Unterforum kannte ich noch nicht, ist ja als Neu markiert.

Das Unterforum für DOIF gibt es seit 2015, wenn ich mich recht erinnere.

Die Markierung "Neu" zeigt lediglich an, dass es in dem Unterforum neue Beiträge gibt.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: Damian am 28 Juli 2023, 19:46:04Du kannst zu deinem Zeittrigger eine Und-Verknüpfung mit der Abfrage des Readings und dem Wochentag verknüpfen:

[Zeit] and ([$SELF:Mo] eq "on" and $wday=1 or [$SELF:Di] eq "on" and $wday=2 or ...

Also doch 7 Abfragen  8)

Zitat von: oldscout am 27 Juli 2023, 18:30:41kann man auch 7 Verschachtelungen einbauen, das ist aber nicht das Ziel.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Damian

Wenn man bereits die entsprechenden Bits im Status gesetzt hat, dann reicht auch:

[Zeit] and [$SELF:state] & 2**$wday
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

oldscout

@Damian: Danke, das wars, also den Wald wieder nicht gesehen wegen der Bäume......

Das Extra Forum habe ich übersehen...

Schönes WE.
FHEM 5.8 auf Intel Celeron CPU
HM-.*, 1-Wire DS18B20, HMLAN, HMUSB, Arduino Uno, ESP8266, Shelly, Tasmota, Enigma2, FB7490, MySql-DB,Unifi, RaspiCCU

Damian

Zitat von: oldscout am 29 Juli 2023, 17:23:15@Damian: Danke, das wars, also den Wald wieder nicht gesehen wegen der Bäume......

Das Extra Forum habe ich übersehen...

Schönes WE.


Für welche Version hast du dich entschieden?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

oldscout

für diese:
[Zeit] and [$SELF:state] & 2**$wday
FHEM 5.8 auf Intel Celeron CPU
HM-.*, 1-Wire DS18B20, HMLAN, HMUSB, Arduino Uno, ESP8266, Shelly, Tasmota, Enigma2, FB7490, MySql-DB,Unifi, RaspiCCU

Damian

Du kannst noch den Trigger beim Status rausnehmen, da nur die Zeit triggern soll. Es wird zwar nichts passieren, da nicht beide Trigger gleichzeitig triggern, aber die unnötige Auswertung der Bedingung bei Statusänderung kann man sich sparen, also:

[Zeit] and [?$SELF:state] & 2**$wday
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF