(ERLEDIGT)Ist dieses DOIF ein Teufelskreis oder geht das so...

Begonnen von misux, 21 Oktober 2019, 20:50:55

Vorheriges Thema - Nächstes Thema

misux

HI!

Folgendes DOIF müsste ich habe um den Status im FTUI zu sehen wenn ich mit ALEXA meinen Dummy schalten lasse.

Mein Gedanke bei deser Konstellation ist allerdings ob sich das DOIF nicht im Kreis dreht und explodiert? ??? :o

Es ist die verkürtzte Variante aber der Sinn ist der gleiche...
([DavidSchicht] eq "Fruehschicht")
(set DavidFruehschicht on)
DOELSEIF
([DavidFruehschicht] eq "on")
(set DavidSchicht Fruehschicht)


Das Problem ist:

Ich habe mehrere Dummy`s mit Alexa verbunden die ich mit ihr schalte...
Diese Dummy`s sind: Frühschicht, Spätschicht, Normalschicht, Nachtschicht und alle haben den STATE on:off

Dann habe ich einen Dummy mit den STATES der jeweiligen Namen der Dummy`s die auf on sind.

Da ich aber auch mit FTUI die Dummy´s schalte brauche ich ja seitens Alexa einen "Rückkanal" sonst bleibt mein SchichtDummy immer auf dem FTUI Wert weil ALEXA ja nur die einzelnen on:off dummys bedienen kann...

Hoffe es hat irgendeiner verstanden... :-X Im Anhang ist ein Bild zur veranschaulichung meiner Dummy`s

Und hier das ganze DOIF Was FTUI seitig funktioniert... Aber wenn ich meine einzelnen Dummy`s per Alexa schalte bleibt mein SchichtDummy auf dem alten Wert stehen...
([DavidSchicht] eq "Fruehschicht")
(set DavidFruehschicht on, set DavidNormalschicht off, set DavidSpaetschicht off, set DavidNachtschicht off, set DavidFrei off)
DOELSEIF
([DavidSchicht] eq "Normalschicht")
(set DavidFruehschicht off, set DavidNormalschicht on, set DavidSpaetschicht off, set DavidNachtschicht off, set DavidFrei off)
DOELSEIF
([DavidSchicht] eq "Spaetschicht")
(set DavidFruehschicht off, set DavidNormalschicht off, set DavidSpaetschicht on, set DavidNachtschicht off, set DavidFrei off)
DOELSEIF
([DavidSchicht] eq "Nachtschicht")
(set DavidFruehschicht off, set DavidNormalschicht off, set DavidSpaetschicht off, set DavidNachtschicht on, set DavidFrei off)
DOELSEIF
([DavidSchicht] eq "Frei")
(set DavidFruehschicht off, set DavidNormalschicht off, set DavidSpaetschicht off, set DavidNachtschicht off, set DavidFrei on)

Damian

Einfach ausprobieren ;)

DOIF reagiert normalerweise nicht auf eigene Events - sollte also gehen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

misux

 ::) Okayyyy... und wenns nicht klappt? und FHEM in einer Todesschleife hängt? Wie bekomme ich das wieder hin? Okay... ich mache mal sicherheitshalber ein Backup...


;D

Vielen Dank!

Damian

Zitat von: misux am 21 Oktober 2019, 21:00:05
::) Okayyyy... und wenns nicht klappt? und FHEM in einer Todesschleife hängt? Wie bekomme ich das wieder hin? Okay... ich mache mal sicherheitshalber ein Backup...


;D

Vielen Dank!

Solche Schleifen werden sowohl von DOIF, aber auch von FHEM selbst unterbunden.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Frank_Huber

Wenn Du Dir ganz unsicher bist:
- Config speichern
- DOIF anlegen und testen. (ohne zu speichern)

Wenn es kracht machst nen Neustart, fertig. DOIF wieder weg.

amenomade

#5
TE: "wird so ein DOIF Probleme machen?"
Entwickler und Maintainer von DOIF: "Nein, das wird funktionieren"
TE: "und wenn es doch nicht funktioniert?"
Entwickler: "DOIF habe ich so geschrieben, und FHem ist auch so konzipiert"
TE: "OK, ich mache lieber ein Backup"

Und nu?
;D 8)
Klar... ein Backup kann sowieso nicht schaden...
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Frank_Huber

Nu gilt es abzuwarten. [emoji23][emoji23][emoji23]

Gesendet von meinem S60 mit Tapatalk


Beta-User

Ähm, mal ganz unabhängig von der konkreten Implementierung. Verstehe ich das richtig:

Du nutzt 5 Dummy's, um EINE Information zu repräsentieren, nämlich die Frage, welche von 5 möglichen Optionen (für die Arbeitszeit) denn heute paßt?

Wenn ja: Vielleicht solltest du das gesamte Konzept nochmal dahingehend überprüfen, ob es nicht sinnvoll wäre, diese _eine_ Information auch in _einem_ Device (oder sogar nur in einem Reading eines Devices, das noch mehr solcher Multiple-Choice-Elemente enthalten könnte) zu verwalten. Das dürfte eine ganze Anzahl weiterer Prüfungen an ganz anderen Stellen überflüssig machen, die ggf. tatsächlich zu "Todesschleifen" führen könnten (auch wenn die FHEM-internen Mechanismen in der Regel das Schlimmste verhindern...). Das wird dann an vielen Stellen jedenfalls tendenziell einfacher ;) .
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Per

Ohne den Sinn weiter zu vertiefen:
a: kann man FILTER nutzen, damit werden keine unnützen Events erzeugt und damit kein Teufelskreis.
b: statt den 5 Einzelabfragen kann man (DavidFrei in DavidFreiSchicht umbenannt) mit RegEx viel machen ( "David.*Schicht" )

misux

#9
Da bin ich wieder!

Zitat von: Frank_Huber am 21 Oktober 2019, 21:07:31
Wenn Du Dir ganz unsicher bist:
- Config speichern
- DOIF anlegen und testen. (ohne zu speichern)

Wenn es kracht machst nen Neustart, fertig. DOIF wieder weg.
Jou, das ist ja auch mal ne Idee... Vielen Dank für den Tipp




Zitat von: amenomade am 21 Oktober 2019, 22:14:05
TE: "wird so ein DOIF Probleme machen?"
Entwickler und Maintainer von DOIF: "Nein, das wird funktionieren"
TE: "und wenn es doch nicht funktioniert?"
Entwickler: "DOIF habe ich so geschrieben, und FHem ist auch so konzipiert"
TE: "OK, ich mache lieber ein Backup"

Und nu?
;D 8)
Klar... ein Backup kann sowieso nicht schaden...

Er schrieb beim ersten mal "sollte klappen"  ;)



Zitat von: Beta-User am 22 Oktober 2019, 08:11:27
Ähm, mal ganz unabhängig von der konkreten Implementierung. Verstehe ich das richtig:

Du nutzt 5 Dummy's, um EINE Information zu repräsentieren, nämlich die Frage, welche von 5 möglichen Optionen (für die Arbeitszeit) denn heute paßt?

Wenn ja: Vielleicht solltest du das gesamte Konzept nochmal dahingehend überprüfen, ob es nicht sinnvoll wäre, diese _eine_ Information auch in _einem_ Device (oder sogar nur in einem Reading eines Devices, das noch mehr solcher Multiple-Choice-Elemente enthalten könnte) zu verwalten. Das dürfte eine ganze Anzahl weiterer Prüfungen an ganz anderen Stellen überflüssig machen, die ggf. tatsächlich zu "Todesschleifen" führen könnten (auch wenn die FHEM-internen Mechanismen in der Regel das Schlimmste verhindern...). Das wird dann an vielen Stellen jedenfalls tendenziell einfacher ;) .
Das Problem ist das ALEXA jeweils einen Schalter braucht. Ich denke nicht das ALEXA einen Dummy mit 5 Status unterstützt... Deshalb müssen es leider 5 Dummys sein die einem 6ten Dummy den richtigen Status geben (Frühschicht, Spätschicht...) und mit diesem Dummy gehe ich dann weiter...


Zitat von: Per am 22 Oktober 2019, 10:17:27
Ohne den Sinn weiter zu vertiefen:
a: kann man FILTER nutzen, damit werden keine unnützen Events erzeugt und damit kein Teufelskreis.
b: statt den 5 Einzelabfragen kann man (DavidFrei in DavidFreiSchicht umbenannt) mit RegEx viel machen ( "David.*Schicht" )
Das ist mir zu kompliziert und für mich zu unübersichtlich... ::) 8)


Fakt ist:
Es funktioniert!

Habe das DOIF etwas angepasst und verkleinert. Nun kann ich mit Alexa meine Schichten hin und her wechseln und im FTUI auch sehen und andersrum genauso...

Vielen Dank für eure Hilfe!

Hier mein DOIF
([DavidFruehschicht] eq "on")
(set DavidSchicht Fruehschicht) (set DavidFruehschicht on, set DavidNormalschicht off, set DavidSpaetschicht off, set DavidNachtschicht off, set DavidFrei off)
DOELSEIF
([DavidNormalschicht] eq "on")
(set DavidSchicht Normalschicht) (set DavidFruehschicht off, set DavidNormalschicht on, set DavidSpaetschicht off, set DavidNachtschicht off, set DavidFrei off)
DOELSEIF
([DavidSpaetschicht] eq "on")
(set DavidSchicht Spaetschicht) (set DavidFruehschicht off, set DavidNormalschicht off, set DavidSpaetschicht on, set DavidNachtschicht off, set DavidFrei off)
DOELSEIF
([DavidNachtschicht] eq "on")
(set DavidSchicht Nachtschicht) (set DavidFruehschicht off, set DavidNormalschicht off, set DavidSpaetschicht off, set DavidNachtschicht on, set DavidFrei off)
DOELSEIF
([DavidFrei] eq "on")
(set DavidSchicht Frei) (set DavidFruehschicht off, set DavidNormalschicht off, set DavidSpaetschicht off, set DavidNachtschicht off, set DavidFrei on)


Und hier das Andere DOIF was sich an das erste knüpft
([?DavidFruehschicht] eq "on" and [?DavidFrei] eq "off" and [?LichtSensor:brightness] < 40.0 and [03:45:00])
{ if(!$we) { fhem("set KuechenTisch on-till 04:30:00;set Deckenfluter on-till 04:35:00")}}
DOELSEIF
([?DavidNormalschicht] eq "on" and [?DavidFrei] eq "off" and [?LichtSensor:brightness] < 40.0 and [05:00])
{ if(!$we) { fhem("set KuechenTisch on-till 05:45;set Deckenfluter on")}}
DOELSEIF
([?DavidSpaetschicht] eq "on" and [?DavidFrei] eq "off" and [?LichtSensor:brightness] < 40.0 and [06:30])
{ if(!$we) { fhem("set KuechenTisch on-till 05:45;set Deckenfluter on")}}
DOELSEIF
([?DavidNachtschicht] eq "on" and [?DavidFrei] eq "off" and [?LichtSensor:brightness] < 40.0 and [04:30])
{ if(!$we) { fhem("set KuechenTisch on-till 04:45;set Deckenfluter on")}}

Frank_Huber

Nur als Hinweis,

([DavidFruehschicht] eq "on")
(set DavidSchicht Fruehschicht) (set DavidFruehschicht on, set DavidNormalschicht off, set DavidSpaetschicht off, set DavidNachtschicht off, set DavidFrei off)


kannst kürzen in:
([DavidFruehschicht] eq "on")
(set DavidSchicht Fruehschicht) (set DavidFruehschicht on) ((set DavidNormalschicht,DavidSpaetschicht,DavidNachtschicht,DavidFrei off))

Per

Zitat von: misux am 24 Oktober 2019, 09:26:25
Das ist mir zu kompliziert und für mich zu unübersichtlich... ::)
Welches von beiden?

misux

Zitat von: Per am 24 Oktober 2019, 11:45:21
Welches von beiden?

Beides  ;D

Und das mit dem RegEx.... da müsste ich mich wieder zu viel einlesen... keine Zeit... Es muss einfach und Schnell gemacht sein..

Beta-User

Zitat von: misux am 24 Oktober 2019, 13:00:20
Und das mit dem RegEx.... da müsste ich mich wieder zu viel einlesen... keine Zeit... Es muss einfach und Schnell gemacht sein..
Viel Freude noch bei dieser Vorgehensweise...

Meine Erfahrung: Einmal gründlich gemacht hält länger und ist flexibler. Sonst reiht sich workaround an workaround, und am ende ist es nicht mehr einfach, und schon gar nicht mehr schnell :P . V.a. der Umgang mit regex sind Grundlagenkenntnisse, die man sich frühzeitig aneignen sollte.

Zitat von: misux am 24 Oktober 2019, 09:26:25
Das Problem ist das ALEXA jeweils einen Schalter braucht. Ich denke nicht das ALEXA einen Dummy mit 5 Status unterstützt... Deshalb müssen es leider 5 Dummys sein die einem 6ten Dummy den richtigen Status geben (Frühschicht, Spätschicht...) und mit diesem Dummy gehe ich dann weiter...
Ich kenne Alexa nicht, aber ich würde eine kleine Wette eingehen, dass diese Aussage (kein Dummy mit 5 Zuständen) nicht stimmt. Sonst könnte man darüber z.B. keine Helligkeit steuern. Damit wären wir wieder bei dem oben gesagten.

Enjoy!
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

MadMax-FHEM

#14
Das mit Alexa ist leider wahr.

Sowas geht nur im Custom Skill und den Aufwand scheuen viele...
Es gibt auch nicht mehr viel Unterstützung (nicht, dass Andre/justme1968 nicht hilft, weiterimplementiert etc. sondern es sind nicht viele Custom Skill Anwender mehr da die helfen könnten und seit den Routinen werden es auch immer weniger, ich gehöre dazu ;)  )...
...und seit der Einführung der Routinen seitens Amazon geht einiges mehr wozu es früher einen Custom Skill zwingend gebraucht hat...

Leider kann man mit den Routinen (soweit ich weiß, hmmm bzw. probiere ich mal noch mal aus ;)  ) keine dedizierten Dinge bei einem Gerät schalten (bzw. wurde mir bislang nur an/aus angeboten / aber das teste ich noch mal) sonst könnte man das tatsächlich per Routine "umbiegen" auf beispielsweise einen "media-dummy" und dann z.B. Kanäle schalten.

Beispiel-Routine: "Alexa, ich habe heute Spätschicht" -> schalte "media-dummy" auf Kanal 1
usw.

EDIT: eben getestet. Leider geht sowas (noch) nicht. Aktuell nur an/aus (eigentlich sogar nur an irgendwie ;)  ). Lautstärke ginge aber leider (noch) nicht von "eigenen" Geräten (auch keinen, die als "Multimedia" erkannt werden, nur Alexas etc.)...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)