Hauptmenü

Harmony Abhängigkeiten

Begonnen von mister, 17 September 2017, 22:15:54

Vorheriges Thema - Nächstes Thema

mister

Hallo zusammen,

ich habe folgendes Szenario:

harmony eingebunden als harmony
Aktion Fernsehen angelegt
Lampe angelegt als Lampe_Fenster

Jetzt habe ich folgendes Problem. Ich möchte gerne wenn ich eine Aktion z.b. Fernsehen starte, das die Beleuchtung (Lampe_Fenster) nach Sonnenuntergang mit angeht ansonsten aus bleibt.
Wie kann hier der Code aussehen? Muss über do if gehen oder?

Ich habe das ganze so verucht
define di_lamp DOIF ([Harmony:currentActivity] eq "Fernsehen") and [{sunset(-3600,"17:00","22:00")}]) (set Lampe_Fenster on) DOELSE (set Lampe_Fenster off)

Rolfg

Hallo,
Heißt das Event wirklich so? Ansonsten mal event Monitor starten und die Aktion ausführen. Was ist wenn der Fernseher an ist und es noch hell ist? Dann muss die Lampe von Hand geschaltet werden.
Gruß Rolf

Rolfg

#2
Hallo,
Ansonsten versuch es mal so:

define di_lamp DOIF ([Harmony:currentActivity] eq "Fernsehen" and [{sunset(-3600,"17:00","22:00")}]) (set Lampe_Fenster on) DOELSE (set Lampe_Fenster off)




Gruß Rolf

Amenophis86

Der Code von Rolfg korrigiert den Klammerfehler von mister. Allerdings ist die Aussage, dass es von Hand geschaltet werden muss nicht richtig. Da vor der Uhrzeitbedingung kein ? steht, schaltet es auch an, wenn die Uhrzeit erreicht ist und der Fernseher schon läuft.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

mister

also ich habe den code jetzt so verändert. Dankeschön. Wenn ich die Aktion bereits gestartet habe und dann die Zeit kommt funktioniert das ganze.
Wenn ich jedoch den Fernsehr nachdem die Zeit bereits aktiv ist einschalte(was nantürlich vorkommen kann), funktioniert das ganze nicht.
Wie bekomme ich das dann hin?

Amenophis86

Weil du keinen Zeitraum eingegeben hast. Du hast zwar bei Sunset einen Zeitraum, aber für das DOIF keinen Zeitraum. Soll heißen in deinen DOIF steht:

Wenn Fernseher an und es ist genau XX:XX Uhr, dann schalte das Licht an, sonst schalte es aus. Was du willst ist ein von bis Zeitraum. Du musst also noch eine Endzeit definieren.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

mister

#6
Danke für die Erklärung. Kannst du mir das anhand meines beispiels mal nachstellen?
Kann mir das im code besser vorstellen denn so ganz weiß ich noch nicht wie das geht.
wenn ich das richtig verstehe müsste ich einen Merker bauen oder?

Amenophis86

Sagen wir sunset ist heute um 18:45, dann sieht deine Bedingung für die Uhrzeit nach errechnen von sunset in der Eckigen Klammer so aus: [18:45]
Was du willst ist aber, dass das Licht in der Zeit von sunset bis 22 Uhr (Beispiel) angeht beim TV schauen. Dann muss die Zeit Bedienung so aussehen:[18:45-22:00]

Dir fehlt jetzt also der bis 22 Uhr Teil. Diesen noch in die Eckige Klammer von sunset setzen. Bedenke aber, dass das Licht bei erreichen der bis Uhrzeit ausgeschaltet wird, auch, wenn du noch TV schaust. Daher Zeitraum entsprechend groß wählen.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

mister

Danke für die super Erklärung jetzt hab auch ich es verstanden :)
Noch eine andere Frage...
Ich würde gerne eine Steckdose die meine Geräte versorgt bei JEDER aktion mit einschalten bzw ausschalten möchte

jetzt müsste ich ja theoretisch zum ausschalten schreiben:

define timer_SchalterHifiaus notify WZ.Harmony.currentActivity:.stopping.Heimkino sleep 300;;set Steckdose_Hifi off

das müsste ich jetzt für jede Aktion sprich fernsehen,heimkino usw. wiederholen.
Gibt es für die harmony eine grundsätzliche Erkennung das eine Aktion gestartet wurde?

Amenophis86

DOIF mit der Bedignung ne "PowerOff" tut es zB auch. Bin mehr DOIF Fan, als notify und at. Aber das muss jeder selbst wissen.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

mister

wie schreibe ich das dann für die Harmony das es nicht nur für eine Aktion sonder für alle gilt?

mister

Gibt es für die Harmony irgendwo eine Befehlsübersicht die tiefer geht als im fhemwiki?

ich habe jetzt

define di_lamp DOIF ([Harmony:currentActivity] eq "Heimkino" and [{sunset(-5500,"17:00","22:00")}-22:30]) (set Lampe_Fenster on) DOELSE (set Lampe_Fenster off)

erstellt.

wenn ich jetzt eq durch ne ersetze passiert folgende: Aktion starten lampe an und nach kurzer zeit wieder aus
Was sagt das ne denn aus?

Amenophis86

Zitatwie schreibe ich das dann für die Harmony das es nicht nur für eine Aktion sonder für alle gilt?
ne "PowerOff"

Zu zweitens ist klar, erst heißt die Aktion "starting Heimkino" Lampe geht an, dann heißt sie Heimkino, Lampe geht aus. Warum? Schau mal nach was "ne" bedeutet, dann kannst du es dir erklären.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

mister

wo kann ich dazu was finden? Ich finde im wiki leider nichts

Amenophis86

CommandRef bei DOIF wäre ein Vorschlag.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

mister

Ist es möglich wenn ich anstelle:

[{sunset(-26500,"12:00","21:00")}-08:30])

die -26500 durch ein Modul bzw Variable ersetze sprich das ich für mehrere doif die gleiche Verzögerung habe?

Amenophis86

Verstehe nicht genau was du meinst. Wichtig ist, dass egal was du einträgst es am Ende das Format [00:00-00:00] haben muss, also einen Zeitraum mit [Stunde:Minute-Stunde:Minute] Das kann eine Perlfunktion sein, es kann ein Reading sein, etc.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...