FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: CarstenF am 18 Januar 2015, 09:43:00

Titel: Modul Harmony als Schaltauslöser für Steckdosen etc.
Beitrag von: CarstenF am 18 Januar 2015, 09:43:00
So, ich würde jetzt gerne auch mal was ins Forum zurückgeben, in der Hoffnung
das ein Neuling damit was anfangen kann. Ich habe selbst hier tolle Hilfe bekommen
und habe auch Super Ergebnisse  (bislang) erzielt. Danke scooty!!!!!
Falls die Code Schnipsel eher in einen anderen Bereich gehören, könnte das ja ein Moderator verschieben.....
Also ich habe folgende Konfiguration:

Funsteckdose 1+2 alias Radio und Fernsehen
An der 1 (Radio) hängt mein Denon Receiver
An der 2 (Fernsehen) hängt der Sat Receiver und der Fernseher.
Weiterhin habe ich den Harmony HUB als Befehlsempfänger (Modul Harmony)
In Fhem eingebunden.
Ich musste bislang also für gewünschte Aktionen bislang eine oder zwei Funksteckdosen einschalten und danach über die FB der Harmony eine Aktion
auslösen (z.Bsp. ich will Fernsehen, schalte das und das und das ein)

Der Grundgedanke war nun folgender. Ich drücke auf der Harmony FB eine Aktionstaste (diese definiert man ja in der Harmony HUB Software.
Der HUB bemerkt die Änderung in den Readings und führt dann erstmal Schaltvorgänge in Fhem aus. Fürs Radio hören zum Beispiel:
Schalte Steckdose 1 Radio an und sende danach den Befehl zur Aktion Radiohören
An den HUB. Denn jetzt ist der Denon Receiver ja auf Standby und kann Befehle vom HUB empfangen.
Ich habe das ganze versucht über ein notify zu realisieren. Jedoch machte der
HUB ständig komische Aktionen (vllt. War ich auch einfach zu blöd)

Jedoch bin ich dann über den DOIF Befehl gestolpert und hab mich erneut an der Sache versucht.
Lange Rede kurzer Sinn:
Ich will Radio hören, nur über den Denon Receiver
Ich will TV schauen über den SAT Receiver i.V.m. dem Denon Verstärker und TV
Ich will von der Aktion Radio hören (Steckdose 1 an) zur Aktion Fernsehen wechseln (Steckdose 2 wird hinzugeschaltet)
Das ganze soll natürlich auch umgekehrt funktionieren, sprich:
Power Off auf der FB, Geräte gehen zunächst aus, danach die Steckdosen aus.

So genug geschwafelt.
Hier die Codes:

Radio hören Denon Receiver:
([Fernbedienung:activity] eq 'Musik.hören' and ReadingsVal ('Fernbedienung', 'previousActivity','undefined') eq 'PowerOff') (set Radio on;set Fernbedienung activity Musik.hören)

TV schauen

([Fernbedienung:currentActivity] eq 'starting Fernsehen' and ReadingsVal('Fernbedienung','previousActivity','undefined') eq 'PowerOff') (set Fernsehen on;set Radio on) DOELSE IF ([Fernbedienung:currentActivity] eq 'starting Fernsehen' and ReadingsVal ('Fernbedienung','previousActivity','undefined') eq 'PowerOff') (sleep 3;set Fernbedienung activity Fernsehen)

Radio hören ausschalten:

([Fernbedienung:activity] eq 'PowerOff' and ReadingsVal('Fernbedienung','previousActivity','undefined') eq 'Musik hören') (set Radio off)

TV schauen ausschalten

([Fernbedienung:activity] eq 'PowerOff' and ReadingsVal('Fernbedienung',   'previousActivity','undefined') eq 'Fernsehen') (set Radio off; set Fernsehen off)

Wechsel vom Radio hören zum Fernseh schauen

([Fernbedienung:currentActivity] eq 'starting Fernsehen' and ReadingsVal ('Fernbedienung','previousActivity','undefined') eq 'Musik hören') (set Fernsehen on) DOELSE IF ([Fernbedienung:currentActivity] eq 'starting Fernsehen' and ReadingsVal ('Fernbedienung','previousActivity','undefined') eq 'Musik hören') (set Fernbedienung activity Fernsehen)


Es ergab sich in Sachen FHEM/PERL/DOIF noch folgende Problem. Statt z.Bsp. die Readings in " " zu setzen, funktionierte bei mir nur die Variante ' '.

Falls es jemand benutzt und es ergeben sich Probleme beim übermitteln der FB Kommandos, muss man ggfls. mit den Zeitverzögerungen in den Geräteeinstellungen spielen, oder den SLEEP Befehl, vor Ausführung des nächsten Befehl anpassen.

Also, viel Spaß beim ausprobieren

Carsten



Titel: Antw:Modul Harmony als Schaltauslöser für Steckdosen etc.
Beitrag von: Damian am 18 Januar 2015, 10:41:18
Angaben, die nur der Abfrage dienen und das Modul nicht triggern sollen, wie

ReadingsVal ('Fernbedienung', 'previousActivity','undefined') eq 'PowerOff'

kannst du mit der aktuellen Version von DOIF mit Fragezeichen angeben, hier:

[?Fernbedienung:previousActivity] eq 'PowerOff'

Gruß

Damian
Titel: Antw:Modul Harmony als Schaltauslöser für Steckdosen etc.
Beitrag von: CarstenF am 18 Januar 2015, 10:49:14
Danke Damian,

Wieder was dazu gelernt. Klasse Modul übrigens. Auch für Nichtprogrammierer wie mich, mit etwas einlesen verständlich.

Gruß Carsten
Titel: Antw:Modul Harmony als Schaltauslöser für Steckdosen etc.
Beitrag von: Damian am 18 Januar 2015, 11:14:44
Zitat von: CarstenF am 18 Januar 2015, 10:49:14
Danke Damian,

Wieder was dazu gelernt. Klasse Modul übrigens. Auch für Nichtprogrammierer wie mich, mit etwas einlesen verständlich.

Gruß Carsten
ja, allerdings sind mir noch paar Feinheiten aufgefallen.

Befehle werden bei DOIF statt mit Semikolen mit Komma angegeben, also

(set Radio on,set Fernbedienung activity Musik.hören)

statt sleep am Anfang einer Befehlskette solltest du mit wait arbeiten. DOELSE IF (IF ist ein eigenständiger Befehl) ist nicht sinnvoll, da das Modul  DOELSEIF selbst kann. Einrückungen erleichtern das Lesen der Definition (DEF anklicken und Enter jeweils am Zeilenende drücken). Also hier z. B.:


([Fernbedienung:currentActivity] eq 'starting Fernsehen' and [?Fernbedienung:previousActivity] eq 'PowerOff')
   (set Fernsehen on,set Radio on)
DOELSEIF ([Fernbedienung:currentActivity] eq 'starting Fernsehen' and [?Fernbedienung:previousActivity] eq 'PowerOff')
   (set Fernbedienung activity Fernsehen)

attr <dein_doif_modul> wait 0:3


Gruß

Damian

Titel: Antw:Modul Harmony als Schaltauslöser für Steckdosen etc.
Beitrag von: der-Lolo am 18 Januar 2015, 11:16:17
Vielleicht macht es in deinem Fall auch mehr sinn den Denon Verstärker mithilfe seines Moduls zu bedienen.
Ich habe den Denon nicht in meiner Harmony eingebunden.
Titel: Antw:Modul Harmony als Schaltauslöser für Steckdosen etc.
Beitrag von: CarstenF am 18 Januar 2015, 11:27:03
Der Denon ist leider nicht netzwerkfähig, sonst hätte ich u.U. dieses Modul versucht. So muss ich mir halt mit dem Harmony Modul behelfen, was ja auch gut klappt.

@ Damian: ich werde mal die "Feinheiten" ausprobieren, jedoch hatte ich die Variante mit dem wait Attribut mehrfach versucht und keinen Erfolg. Den Hinweis auf sleep Befehl, abgetrennt mit Semikolon, hatte ich auch hier aus dem DOIF Thread.(glaube ich)
Dann funktionierte plötzlich alles zu meiner Zufriedenheit.
Titel: Antw:Modul Harmony als Schaltauslöser für Steckdosen etc.
Beitrag von: justme1968 am 18 Januar 2015, 11:27:58
wenn die harmony irgendwie beteiligt sein könnte (z.b. durch bedienen auf der fernbedienung) ist es sinnvoll zumindest das einschalten über die harmony zu machen. sonst kommt der smart state durcheinander. genau so wie beim einschalten von hand oder die über die original fb.

alles weitere ist aus fhem heraus meist besser über das richtige device modul zu machen wenn es ein solches gibt.

gruss
  andre
Titel: Antw:Modul Harmony als Schaltauslöser für Steckdosen etc.
Beitrag von: CarstenF am 18 Januar 2015, 11:33:48
Das ist auch wieder wahr. Wenn man über ein anderes Modul gehen würde, weiß die Harmony ja nicht was gerade für eine Aktion läuft. Guter Einwand.
Titel: Antw:Modul Harmony als Schaltauslöser für Steckdosen etc.
Beitrag von: MaJu am 30 Januar 2015, 10:10:30
Ich habe es anders gelöst, allerdings habe ich nur eine Steckdose an der alle Multimediageräte hängen. Das sollte für dich aber abwandelbar sein. Du sparst dir die Abfrage der vorherigen Harmony-Activity.

Vorlauf:
Ich habe bei der Harmony ein dummy-Gerät eingerichtet, irgendwas was du nicht zu Hause hast (zum Beispiel ein Videorecorder).
Bei dem änderst du in der Harmony die Ein- und Ausschaltsequenz: Einschalten: Irgendeine-Taste-auswählen, dann ein paar Sekunden Pause, und nochmal irgendeine Taste.
Das Ausschalten habe ich separat erstellt, nur "irgendeine-Taste".
Bei allen betroffenen Aktionen der Harmony muss dieses Gerät in der Einschaltsequenz nun an die erste Stelle.

Fazit: Die Harmony meint, sie steuert das dummy-Gerät an, wartet bis zur Ansteuerung des nächsten ("echten") Gerätes aber so lange wie du als Einschalt-Wartezeit eingegeben hast. In dieser Zeit hat FHEM die Möglichkeit, die Steckdosen zu schalten.
Die ganzen zusätzlichen Aktionen in der Harmony sparst du dir damit, die machen die Benutzung mit der iOS-/Android-App ja quasi unbenutzbar wenn man nicht weiß was man wählen soll.

Meine DOIF sieht so aus:
([harmony:currentActivity] eq "PowerOff" ) (sleep 10; set Steckdose_TV off)

DOELSEIF
([harmony:currentActivity] ne "PowerOff" ) (set Steckdose_TV on)


Ergebnis: Wenn "PowerOff" auf der Fernbedienung gedrückt wird, wird die Steckdose mit 10 Sekunden Verzögerung ausgeschalten. Bei allen anderen Aktionen (also egal ob Radio hören, BluRay gucken, TV gucken, weiß der Geier was machen was man so alles als Aktionen in der Harmony hat) wird die Steckdose eingeschalten, die Harmony sendet die nächsten Befehle des jeweiligen Activities durch das in der Harmony eingestellte dummy-Gerät mit langer Einschaltzeit aber erst mit der entsprechenden Verzögerung.

Es wird es deinen Steckdosen nicht weh tun, wenn du unnötig einen Ausschaltbefehl schickst, das wird ja dann ignoriert (das Betrifft das Ausschalten und den Wechsel von TV gucken auf Radio hören).

Bei dir wäre das dann zum Beispiel folgendes DOIF:
([Fernbedienung:currentActivity] eq "Musik.hören") (set Radio on, set Fernsehen off)

DOELSEIF
([Fernbedienung:currentActivity] eq "Fernsehen") (set Fernsehen on, set Radio on)

DOELSEIF
([harmony:currentActivity] eq "PowerOff" ) (sleep 10; set Fernsehen off; set Radio off)


Beim letzten DOELSEIF zum Ausschalten wartet FHEM bei mir 10 Sekunden, damit die Geräte die Infrarot-Ausschaltbefehle sauber verarbeiten können und runterfahren und schaltet die Steckdose erst nach 10 Sekunden aus. Hier muss du nach dem Sleep bei allen Folgebefehlen ein Semikolon statt Komma setzen, damit das Sleep nicht dazu führt dass das gesamte FHEM für die Zeit lahmgelegt wird.
Titel: Antw:Modul Harmony als Schaltauslöser für Steckdosen etc.
Beitrag von: domii666 am 06 April 2015, 02:17:18
wo füg ich das am blödesten ein? will eig mit nem 6fach taster erst die funksteckdose schalten danach die aktion.
Titel: Antw:Modul Harmony als Schaltauslöser für Steckdosen etc.
Beitrag von: CarstenF am 20 August 2015, 07:07:12
Hi, Frage noch aktuell?
Lange nicht reingeschaut und gerade erst gelesen..... ::)

Also ich würde mal sagen, einfach ins Eingabefeld von FHEM eintragen also einfaches DOIF

define Aktion DOIF ([6Fachtaster:?on]) (set HarmonyFB activity Musikhören)

Müßtest Du nur anpassen in Sachen 6Fachtaster, bzw bei der Aktion der Harmony FB.
Titel: Antw:Modul Harmony als Schaltauslöser für Steckdosen etc.
Beitrag von: sasquuatch am 06 Juni 2016, 07:47:58
ist schon ein wenig älter, aber ich bin zufällig drauf gestossen und interessiere mich für das thema, allerdings möchte ich was ganz anderes. wenn ich auf der couch sitze und gerade das harmony app auf habe, möchte ich ab und an mal was in fhem schalten. extra ein browser oder anderes app aufzumachen nervt, ist ähnlich als hätte man 3 oder mehr FB neben sich liegen.

ich möchte jetzt nicht beim auslösen einer activity, dass eine steckdose an oder aus geht. ich möchte, wenn ein bestimmtes gerät einen selbst angelernten befehl sendet, dass z.B. die TV Beschattung runter oder rauf fährt oder die kaffeemaschine aus geht. im prinzip ist es ja ganz simpel fehlende befehle bei einem gerät anzulernen. man braucht nur eine alte FB die nicht mehr genutzt wird, benutzt irgendeine taste die nichts auslöst und vergibt irgendeinen Namen was dann passieren soll, wie z.B TV-Beschattung-Runter.

ich weiß aber nicht wie ich DOIF programmieren muss, um beim senden von bestimmten befehlen eines HarmonyHub Gerätes, ich einen FHEM Befehl auslöse. ich habe nicht mal die hier gezeigten DOIF Bedinungen
([Fernbedienung:activity] eq 'Musik.hören' and ReadingsVal ('Fernbedienung', 'previousActivity','undefined') eq 'PowerOff')wirklich verstanden. meine Sonnenbesschattung mittels DOIF macht mir keine probleme, aber hier hänge ich gerade.

dachte ja an sowas:
([HarmonyHUB:Device] eq 'KaffeemaschineAus') (set Kaffeemaschine off)
es passiert aber nichts :(

momentan denke ich an sowas
(ReadingsVal ('HarmonyHUB', 'Device') eq 'KaffeemaschineAus') (set Kaffeemaschine off)
nimmt aber fhem erst gar nicht an und wirft mir eine fehlermeldung aus "no trigger in condition" :S
Titel: Antw:Modul Harmony als Schaltauslöser für Steckdosen etc.
Beitrag von: justme1968 am 06 Juni 2016, 08:00:18
schau dir das fakeRoku modul an und das hier: https://forum.fhem.de/index.php/topic,52246.0.html (https://forum.fhem.de/index.php/topic,52246.0.html).

gruss
  andre