DOIF soll auf Status eines Devices reagieren, Eventerzeugung

Begonnen von rasti, 28 Januar 2024, 21:19:55

Vorheriges Thema - Nächstes Thema

rasti


Hallo,

ich habe einen TV, der sich nur per Infrarot einschalten lässt aber dann per Viera.Modul steuerbar ist.

Zum Einschalten verwende ich einen IR Blaster. Der wird über den Dummy TV-Schalter angesteuert und der TV eingeschaltet.

Die Anzeige in FHEM  ob TV an/aus soll über Dummy TV-Schalter erfolgen. Der Dummy TV Schalter soll also automatisch abgeschaltet werden, wenn das Reading state des TV auf off steht. Dazu die DOIF Routine. Das funktioniert auch alles super wenn sich die TV Readings ändern, dann werden wohl Events erzeugt.

Wenn ich aber der TV abgeschaltet ist, ich den Dummy TV-Schalter einschalte ohne dass das TV das mitbekommt (also TV Reading unverändert auf off bleibt) dann reagiert das DOIF nicht, ich vermute weil keine Events generiert wurden.

Um diese Events zu erzeugen habe ich die at Routine gebastelt. Die sollte eigentlich die events erzeugen auf die das DOIF reagieren kann. Geht aber nicht. Was mache ich falsch ?


# TV Gerät einschalten per Fernbedienung oder Tablet UI => Dummy TV-Schalter
define _____TV_Wohnzimmer VIERA 192.168.178.9
attr _____TV_Wohnzimmer event-on-change-reading .*

# Dummy Schalter
define TV_Schalter dummy
attr TV_Schalter setList on off

# DO IF soll Dummy Schalter auf off setzen, wenn TV aus ist
define TV_Schalter_off1 DOIF ([_____TV_Wohnzimmer:power] eq "off") (set TV_Schalter off)
attr TV_Schalter_off1 do always

# at....soll TV Schalter regelmäßig auf dessen Status setzen, dabei ein Event erzeugt wird, worauf das DOIF reagieren kann
define TV_Schalter_at at +*00:00:10 set _____TV_Wohnzimmer power [_____TV_Wohnzimmer:power]




betateilchen

Fragen zu DOIF gehören in das entsprechende Unterforum, nicht in die Anfängerfragen.

Aber hier geht es gar nicht um DOIF sondern um viel zu kompliziertes Denken und das Unvermögen, eine einfache Aufgabe auf das simpelste herunterzubrechen.

  • Warum triggerst Du nicht einfach mit einem notify auf den dummy TV_Schalter UND das VIERA device gleichzeitig?
  • Warum braucht man 4 (vier!) devices, um einen dämlichen Fernseher einzuschalten?
  • Warum verwendest Du nicht setreading anstatt set, wenn Du events haben möchtest?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DasQ

#2
Hi,

ich als lernender mitlesen versuche es mal anders.

Zum einen hast du es geschafft mich mit deim topic neugierig zu machen. Ich will Sachen oft einfach nur verstehen, ohne sie nachzuvollziehen zu können (mangels Hardware oder wat auch immer)ich will es halt einfach verstehen.

Jetzt mußte ich nach dem lesen deines postings erstmal nachforschen was ist ,,Viera". Aha Panasonic, nötig dazu Suchbegriff für Google ,,viera fhem".
Da sind wir dann schon bei der zweiten Frage die dein posting offen lässt.
Marke vom Fernseher (die weis ich jetzt) aber es fehlt immer noch Model und Alter.

Alter? Auf Wiki Fhem findet man in der Fußnote ein Vermerk zu Fernseher per LAN nicht einschaltbar

Okey, noch ne frage, wusstest du das? ::) (Anmerkung: die usebility der Smileys icons hier im Board lässt zu wünschen übrig, ein paar Pixel mehr Abstand zur Textbox würden nicht schaden. Ich mit meinen wurstfingern am iPad unter ff setz die smilies eher random)

Zu den restlichen offenen Fragen hat hier mein Vorredner bereits alles gesagt, dem kann ich mich nur anschließen.

Keep it simple


Nix für ungut, du schaffst das mit unserer Hilfe. Und ggf kommt mehr bei rum als anfangs gedacht. Ich lern ja immer gern was dazu.

Und ich hätte gern, das die Gesellschaft wieder mehr auf sich zugeht.

Danke fürs lesen, Rechtschreibfehler gibt's wie immer kostenlos dazu.


Fhem on MacMini/Ubuntu.
Absoluter Befürworter der Konsequenten-Kleinschreibung https://de.wikipedia.org/wiki/Kleinschreibung
Infos zu Klimawandel http://www.globalcarbonatlas.org

rasti

#3
Hallo,

nach der ersten Antwort hatte ich eigentlich keine Lust mehr weiterzufragen. Da die zweite Antwort etwas freundlicher ausfiel, hier nochmal ein paar Zeilen zur Aufklärung.

Mein Problem ist kein "Unvermögen, eine einfache Aufgabe auf das simpelste herunterzubrechen" sondern ein Mangel an FHEM / Regex/ Perl Grundkenntnissen Ich habe nie richtig programmiert, bin Elektrotechniker kein Informatiker, ich kann bestehenden Code halbwegs verstehen und auf meine Bedürfnisse anpassen aber die Syntax von fhem/perl macht mir dabei schon ein wenig zu schaffen und ich habe auch nicht wirklich den Antrieb das noch richtig lernen zu wollen, es bleibt halt bei Codepfuscherei. Was läuft läuft das fasse ich dann tunlichst nicht mehr an.

Eigentlich funktioniert ja (seit 2016 also 8 Jahren) alles, d.h. ich kann den TV ein- und ausschalten sowohl über Fernbedienung als auch über FHEM. kleine Ausnahme :Zum Einschalten des TV per FHEM/Tablet UI nehme ich das Device TV_Schalter, weil man eben wegen Uralt-Panasonic diesen nicht per LAN einschalten kann, deswegen das WLAN-IR-Gateway. 

Beim Neuaufsetzen (Aktualisierung von FHEM nach 8 Jahren und Umzug von Pi1 auf Pi5) ist mir beim Testen aufgefallen, dass in dem besonderen Fall, wo man den TV per FHEM/IRblaster einschaltet (über das Device TV_Schalter) dieser das aber nicht mitbekommt, das Device TV_Schalter anbleibt und somit der Zustand des TV falsch in Tablet UI visualisiert wird. Das wollte ich beheben.

Die ganz einfache Lösung wäre Schalten per Device TV_Schalter (wie gehabt) aber Visualisierung nicht des TV-Schalters in Tablet UI sondern eben des Devices /TV.  Ich wollte es halt mal (kompliziertes Denken) über das DOIF machen und habe nicht verstanden warum das so nicht geht.


DasQ

So wie ich jetzt gelesen hab müsste dein Fernseher (bj nach 2014) per magic Packet (wol Modul Fhem) an gehen, grundvorrausgesetzt er hat ein lankabel.

Sei es wie es ist. Du könntest den gesamten Ablauf über ein einziges doif erledigen. Ohne Notifikation oder dummy.
Doif kann Timer und setreading, wenn man es denn braucht.

Wenn man was neu macht, ist bei mir immer der Versuch es besser zu machen wie zuvor.

Und in dem Fall denk ich geht besser recht einfach.

Fhem on MacMini/Ubuntu.
Absoluter Befürworter der Konsequenten-Kleinschreibung https://de.wikipedia.org/wiki/Kleinschreibung
Infos zu Klimawandel http://www.globalcarbonatlas.org

rasti

Nein WOL geht nicht, es ist ein TX-L47DT50E erschienen 2012,wurde 2014 gebraucht gekauft, hat LAN aber Wake-on-LAN geht nicht

DasQ

Ja schade.

Wenn ich morgen dran denk, such ich dir mein doif raus, als Muster.
Fhem on MacMini/Ubuntu.
Absoluter Befürworter der Konsequenten-Kleinschreibung https://de.wikipedia.org/wiki/Kleinschreibung
Infos zu Klimawandel http://www.globalcarbonatlas.org

Aurel_B

Viele Wege führen nach Rom: ein anderer Ansatz wäre, mit dem Modul "presence" zu arbeiten. Ich gehe dabei davon aus, dass dein TV mit IP 192.168.178.9 nach dem Abschalten nicht mehr auf pings reagiert -> du machst ein notify auf dein presence Modul, das - wenn der TV abgeschalten wurde oder gar nie anging - dir deinen Dummy TV Schalter auf "off" setzt.

betateilchen

Schonmal darüber nachgedacht, die Zustandsvisualisierung des Fernsehers einfach anhand seines Energieverbrauchs umzusetzen? Zwischenstecker mit Leistungsmessung sind ja inzwischen kein unüberschaubarer Kostenfaktor mehr, selbst wenn man wirklich nur die Leistungsmessung benutzt.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!