FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: rasti am 04 März 2018, 23:59:00

Titel: GELÖST : DOIF Fehler
Beitrag von: rasti am 04 März 2018, 23:59:00
Hallo,

ich habe einen Panasonic Viera, das ich mit dem Viera-Modul steuere.
IP ist 192.168.178.9
Das Modul kann den Fernseher aber nicht einschalten.
Dazu dient neuerdings ein IR-WLAN-Gateway mit IP 192.168.178.21
Funktioniert alles soweit.

Um das ganze über Tablet UI zu schalten habe ich den Dummy TV_Schalter definiert.

<li data-row="5" data-col="1" data-sizex="1" data-sizey="1" class="semitransparent">
<header>TV an/aus</header><div data-type="switch" data-device="TV_Schalter" class="cell" data-icon="fa-tv"></div>
         <div data-type="label" class="cell">TV an/aus</div>

         
</li>

Wenn TV-Schalter auf on geht, wird über den DOIF TV_Schalter_on der Fernseher über
das IR-WLAN-Gateway eingeschaltet. Das funktioniert auch.

Was nicht geht : Ich will in Tablet UI sehen, wann der Fernseher an oder aus ist. Das geht aber nur, wenn ich über
FHEM / Tablet UI schalte. Mache ich den TV über die Fernbedienung aus, ändert sich der Zustand von TV_Schalter
(sichtbar in Tablet UI) natürlich nicht. Deswegen wollte ich mit dem DOIF TV_Schalterflag_off den Zustand von TV_Schalter
auf off setzen damit dies im Tablet UI Icon auch angezeigt wird. Das geht aus irgendeinem Grund aber nicht.
Was ist an dem Code ( DOIF TV_Schalterflag_off )  falsch ?

Viele Grüße

Ralf



define _____TV_Wohnzimmer VIERA 192.168.178.9

define TV_Schalter dummy
attr TV_Schalter setList on off

define TV_Schalter_on DOIF ([TV_Schalter] eq "on") ({GetHttpFile("192.168.178.21","/json?plain=[{'data':'0100BCBD','address':'16388','type':'PANASONIC','length':48,'pulse':10,'pdelay':1}]")})
attr TV_Schalter_on do always

define TV_Schalter_off cmdalias set TV_Schalter off AS ;; set _____TV_Wohnzimmer off

define TV_Schalterflag_off DOIF ([_____TV_Wohnzimmer] eq "absent") (set TV_Schalter off)
attr TV_Schalterflag_off do always

Titel: Antw:DOIF Fehler ?
Beitrag von: Amenophis86 am 05 März 2018, 06:52:59
Mal abgesehen, dass ich Namen mit vielen _ am Anfang für sehr unschön und störend halte, ist die Frage ob überhaupt der Zustand absent getriggert wird. Helfen könnten da, wie so oft gefordert, lists der entsprechenden Device.
Titel: Antw:DOIF Fehler ?
Beitrag von: Ellert am 05 März 2018, 06:54:51
Zitat von: rasti am 04 März 2018, 23:59:00
Hallo,

ich habe einen Panasonic Viera, das ich mit dem Viera-Modul steuere.
IP ist 192.168.178.9
Das Modul kann den Fernseher aber nicht einschalten.
Dazu dient neuerdings ein IR-WLAN-Gateway mit IP 192.168.178.21
Funktioniert alles soweit.

Um das ganze über Tablet UI zu schalten habe ich den Dummy TV_Schalter definiert.

<li data-row="5" data-col="1" data-sizex="1" data-sizey="1" class="semitransparent">
<header>TV an/aus</header><div data-type="switch" data-device="TV_Schalter" class="cell" data-icon="fa-tv"></div>
         <div data-type="label" class="cell">TV an/aus</div>

         
</li>

Wenn TV-Schalter auf on geht, wird über den DOIF TV_Schalter_on der Fernseher über
das IR-WLAN-Gateway eingeschaltet. Das funktioniert auch.

Was nicht geht : Ich will in Tablet UI sehen, wann der Fernseher an oder aus ist. Das geht aber nur, wenn ich über
FHEM / Tablet UI schalte. Mache ich den TV über die Fernbedienung aus, ändert sich der Zustand von TV_Schalter
(sichtbar in Tablet UI) natürlich nicht. Deswegen wollte ich mit dem DOIF TV_Schalterflag_off den Zustand von TV_Schalter
auf off setzen damit dies im Tablet UI Icon auch angezeigt wird. Das geht aus irgendeinem Grund aber nicht.
Was ist an dem Code ( DOIF TV_Schalterflag_off )  falsch ?

Viele Grüße

Ralf



define _____TV_Wohnzimmer VIERA 192.168.178.9

define TV_Schalter dummy
attr TV_Schalter setList on off

define TV_Schalter_on DOIF ([TV_Schalter] eq "on") ({GetHttpFile("192.168.178.21","/json?plain=[{'data':'0100BCBD','address':'16388','type':'PANASONIC','length':48,'pulse':10,'pdelay':1}]")})
attr TV_Schalter_on do always

define TV_Schalter_off cmdalias set TV_Schalter off AS ;; set _____TV_Wohnzimmer off

define TV_Schalterflag_off DOIF ([_____TV_Wohnzimmer] eq "absent") (set TV_Schalter off)
attr TV_Schalterflag_off do always


Es könnte an den führenden Unterstrichen liegen.

Die Konstellation ist recht kompliziert, im Grunde reicht ein DOIF, kein Dummy, kein cmdalias

define TV_Schalter DOIF(1) ({GetHttpFile...)
DOELSEIF (2) (set _____TV_Wohnzimmer off)
DOELSEIF ([_____TV_Wohnzimmer] eq "absent")


und die Attribute
cmdState on|off|off
do always
setList on,off


In FTUI schaltet set TV_Schalter on ein und set TV_Schalter off aus.
Die Bedingung sollte den Status des DOIF auf off setzen, falls die führenden Unterstriche funktionieren sonst _____TV_Wohnzimmer umbenennen.
Das Thema Event wurde ja schon erwähnt.
Titel: Antw:DOIF Fehler ?
Beitrag von: TWART016 am 05 März 2018, 13:00:36
Ich überprüfe per presence (lan-ping) ob der TV an ist, und stelle das in FTUI dar.
Titel: Antw:DOIF Fehler ?
Beitrag von: rasti am 06 März 2018, 19:05:46
Hallo Ellert,

ich habe deinen Code (den ich dummerweise auch nicht verstehe) einfach mal verwendet.



define TV_Schalter DOIF (1) ({GetHttpFile("192.168.178.21","/json?plain=[{'data':'0100BCBD','address':'16388','type':'PANASONIC','length':48,'pulse':10,'pdelay':1}]")}) DOELSEIF (2) (set _____TV_Wohnzimmer off) DOELSEIF ([_____TV_Wohnzimmer] eq "absent")

attr TV_Schalter cmdState on|off|off
attr TV_Schalter do always
attr TV_Schalter setList on,off


Ich bekomme aber schon bei der Definition die Meldung 0 TV_Schalter DOIF: no trigger in condition: 1


Was ist da nicht richtig ?

Viele Grüße

Ralf
Titel: Antw:DOIF Fehler ?
Beitrag von: Ellert am 06 März 2018, 19:46:45
DOIF Version aktuell (https://fhem.de/commandref_DE.html#version)?
DOIF verstehen (https://fhem.de/commandref_DE.html#DOIF) Stichworte set-Befehle, Attribut cmdState

Das DOIF verhält sich so, wie Du es von Deinem Dummy erwartest.
Titel: Antw:DOIF Fehler ?
Beitrag von: rasti am 06 März 2018, 23:24:09
Zitat von: Ellert am 06 März 2018, 19:46:45
DOIF Version aktuell (https://fhem.de/commandref_DE.html#version)?

Hallo,

es war eine DOIF-Version von 2016 drin, habe ein Einzelmodulupdate gemacht.
Nun habe ich 98_DOIF.pm               16182 2018-02-14 21:36:04Z Damian

Es kommt aber dieselbe Fehlermeldung

Viele Grüße

Ralf
Titel: Antw:DOIF Fehler ?
Beitrag von: Ellert am 07 März 2018, 09:51:51
Solange Du
define TV_Schalter DOIF (1)
nicht fehlerfrei definieren kannst, ist das Update nicht erfolgreich gewesen.
Einzelmodulupdates erhöhen die Wahrscheinlichkeit, dass es zu Inkonsistenz im System kommt.
Titel: Antw:DOIF Fehler ?
Beitrag von: rasti am 09 März 2018, 17:26:12

Hallo,

Komplettupdate habe ich mich nicht getraut :=)

So geht's jetzt :

define TV_Schalter dummy
attr TV_Schalter setList on off

define TV_Schalter_on DOIF ([TV_Schalter] eq "on") ({GetHttpFile("192.168.178.21","/json?plain=[{'data':'0100BCBD','address':'16388','type':'PANASONIC','length':48,'pulse':10,'pdelay':1}]")})
attr TV_Schalter_on do always

define TV_Schalter_off DOIF ([TV_Schalter] eq "off") (set _____TV_Wohnzimmer off)
attr TV_Schalter_off do always


define TV_Schalterflag_off DOIF ([_____TV_Wohnzimmer] eq "absent") (set TV_Schalter off)
attr TV_Schalterflag_off do always

define TV_Schalterflag_on DOIF ([_____TV_Wohnzimmer] eq "on") (set TV_Schalter on)
attr TV_Schalterflag_on do always

Titel: Antw:DOIF Fehler ?
Beitrag von: KernSani am 10 März 2018, 18:29:31
Dann bitte noch [Gelöst] vor das Subject des ersten Post schreiben :-)