Hauptmenü

[Gelöst]Logikproblem

Begonnen von Carsten1981, 29 Januar 2021, 16:17:23

Vorheriges Thema - Nächstes Thema

Carsten1981

Hallo zusammen,

ich habe gerade ein kleines Logik Problem (steuerung Rollos zum Sonnenschutz) bei dem ich vermutlich einfach nur blind davor stehen und die Lösung vermutlich soooo einfach ist. Das ist mein DOIF


(([Dummy_Sonnenschutz_Balkon_hoch] eq "on") or ([Dummy_RFID] eq "455881555865")
(set Sprachausgabe tts :klingel.mp3:)
(set Rollo_SZ off)
(set Rollo_AZ off)
DOELSEIF
(([Dummy_Sonnenschutz_Balkon_runter] eq "on") or ([Dummy_RFID] eq "593638227802")
(set Sprachausgabe tts :klingel.mp3:)
(set Rollo_SZ on)
(set Rollo_AZ on)
(set Rollo_SZ off-for-timer 6)
(set Rollo_AZ off-for-timer 6)
DOELSEIF
......


jetzt zu meinem Problem:
- Das DOIF läuft seid 3 Jahren nur mit den Dummy Devices die immer auf on stehen und das DOIF immer auf ein neues set on triggert
- Baue ich das DOIF "nur" mit dem RFID Tag funktioniert es problemlos
- aber wenn ich das DOIF so wie oben bau, dann triggert er z.B. cmd_2 (über den RFID-Tag) und springt dann direkt wieder auf cmd_1 folglich bleiben die Rollos oben. Ich finde aber keinen Auslösegrund für cmd_1. Das Reading von dem Dummy_RFID stimmt nicht und das Reading von Dummy_Sonnenschutz_Balkon_hoch stimmt zwar, ist aber ja alt, d.h nicht neu angestoßen wurden.

Vielleicht sieht ja jemand spontan meinen Logikknoten im Kopf.

Gruß Carsten
fhem 5.8 CUL 433, 8x DS18B20, 8fach 230V Relais
benachrichtigungen über Telegram, Steuerung Solar- und Kaminpumpe, Steuerung Somfy Rollos, Lichtsteuerung über Intertechno, Steuerung Heizungspumpe und Mischer Fußbodenheizung

Frank_Huber

Hi Carsten,

Bitte poste ein List im vermeintlichen Fehlerfall. Das sagt uns dann schon wer cmd_1 ausgelöst hat. :-)

Otto123

#2
Hi Carsten:

da sind die Klammern doch falsch! In beiden Abfragen!
(([Dummy_Sonnenschutz_Balkon_hoch] eq "on") or ([Dummy_RFID] eq "455881555865")
so
([Dummy_Sonnenschutz_Balkon_hoch] eq "on" or [Dummy_RFID] eq "455881555865")

Klammern zählen hilft und manchmal sind weniger Klammern übersichtlicher und besser. ;)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Carsten1981

hi Frank,

auf list hätte ich auch selber kommen können, das cmd_1 wird duch den Dummy getriggert, das Reading "on" ist aber aber älter als der erneute triggger auf cmd_1

Hi Otto,

die Klammern hatte ich am Anfang so wie du sie korrigiert hast, geändert habe ich es dann im laufe der Fehlersuche. cmd_1 funktioniert bei beiden Varianten über den Dummy und mittels des RFID Tags

Gruß Carsten
fhem 5.8 CUL 433, 8x DS18B20, 8fach 230V Relais
benachrichtigungen über Telegram, Steuerung Solar- und Kaminpumpe, Steuerung Somfy Rollos, Lichtsteuerung über Intertechno, Steuerung Heizungspumpe und Mischer Fußbodenheizung

Frank_Huber

Jede Änderung am dummy lässt das doif laufen.
Du kannst auf eventtriggerung umbauen oder mal versuchen das Attribut checkreadungevents zu setzen.
Oder im dummy mit den Event-on Attributen...

Viele Wege.... 😉

Otto123

und nun? Wissen wir nicht mehr was das Problem ist?

Zitatdas cmd_1 wird duch den Dummy getriggert, das Reading "on" ist aber aber älter als der erneute triggger auf cmd_1
Der Trigger von DOIF wird durch eine Änderung im Device [Dummy_RFID] ausgelöst. Das Alter von anderen Readings spielt keine Rolle, das wird immer trotzdem mit abgefragt.

Da Du oder Verknüpft hast: Wenn [Dummy_RFID] getriggert wird, rennt das DOIF los stellt fest Bedingung 1 ist erfüllt -> erledigt.

Du willst vielleicht anstatt ODER -> UND also and statt or ?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Carsten1981

Zitat
Da Du oder Verknüpft hast: Wenn [Dummy_RFID] getriggert wird, rennt das DOIF los stellt fest Bedingung 1 ist erfüllt -> erledigt.[/quote]
Ok, das erklärt wieso er direkt wieder auf cmd_1 triggert. War mir so nicht bewusst, aber ist natürlich logisch, sonst müssten sich ja alle Readings gleichzeitig aktualisieren, damit ein DOIF auslösen kann

Eine "und" verknüpfung funktioniert leider nicht, da ich insgesamt 14 RFID-Tags habe und wenn ich den Sonnenschutz mit dem Dummy anstoßen will und als letztes ein anderer RFID Tag ausgelsesen wurde, würde das passende cmd ja nicht auslösen.

Dann werde ich das wohl auf 2 DOIF ändern müssen, einen für die RFID Tags und einen für die Dummys

Danke für Hilfe meinen Knoten im Kopf zu lösen
fhem 5.8 CUL 433, 8x DS18B20, 8fach 230V Relais
benachrichtigungen über Telegram, Steuerung Solar- und Kaminpumpe, Steuerung Somfy Rollos, Lichtsteuerung über Intertechno, Steuerung Heizungspumpe und Mischer Fußbodenheizung

laberlaib

Frank_Huber hats auch schon vorgeschlagen: Eventtriggerung sollte funktionieren, je nach dem was deine Dummy_Sonnenschutz_Blakon_* sind und ob sie Events auslösen:
https://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events


also
[Dummy_Sonnenschutz_Balkon_hoch:"on"]
sollte dann nur triggern, wenn das Event kommt und nicht wenn der Zustand so ist.
--
Proxmox, Homematic, G-Tags, Zigbee2MQTT, Rhasspy Sprachsteuerung im Aufbau (beta)

Carsten1981

Zitat
[Dummy_Sonnenschutz_Balkon_hoch:"on"]

perfekt, funktioniert danke
fhem 5.8 CUL 433, 8x DS18B20, 8fach 230V Relais
benachrichtigungen über Telegram, Steuerung Solar- und Kaminpumpe, Steuerung Somfy Rollos, Lichtsteuerung über Intertechno, Steuerung Heizungspumpe und Mischer Fußbodenheizung