Hausautomation erweitern mit notify update & DOIF

Begonnen von zurli, 04 Januar 2016, 20:40:56

Vorheriges Thema - Nächstes Thema

zurli

Guten Tag

Ich habe eine bestehende Hausautomation, welche ich mit FHEM erweitern will.
Ich konnte bereits erfolgreich Messwerte über mysensors in FHEM integrieren.

Gerne würde ich nun auch noch die bestehende Hausautomation über FHEM ansteuern.
Ich kann die bestehende Hausautomation mit folgendem Beispiel die Downlights in der Küche steuern.
ein = http://192.168.xx.yy/sendtask.xml?T=0311
aus = http://192.168.xx.yy/sendtask.xml?T=0310
toggle = http://192.168.xx.yy/sendtask.xml?T=0312

Ich habe mir nun im FHEM ein Dummy angelget, mit welchem ich die Lampe ein und ausschalten kann.

define DonwlightKueche dummy
attr DonwlightKueche webCmd on:off
define DonwlightKueche_notify notify DonwlightKueche {if (Value("DonwlightKueche") eq "on"){GetFileFromURL 'http://192.168.xx.yy/sendtask.xml?T=0311'}else{GetFileFromURL 'http://192.168.xx.yy/sendtask.xml?T=0310'}}


Wenn ich nun aber die Lampe über den Hausautomations Taster ausschalte kommt das FEHM nicht mit.
Ich kann aber auf der VISU der bestehenden Hausautomation einen xml-Status abfragen.

Beispiel der xml Datei. Die Downlights der Küche haben die Variable 31.

<status>
<time>18:51</time>
<date>16-01-04</date>
<day>0</day>
<msg>0</msg>
<asrc zone="0">5</asrc>
<asrc zone="1">0</asrc>
<asrc zone="2">0</asrc>
<asrc zone="3">5</asrc>
<var nr="10">0</var>
<var nr="101">1</var>
<var nr="11">0</var>
<var nr="110">0</var>
<var nr="111">25</var>
<var nr="112">1</var>
<var nr="113">0</var>
<var nr="114">0</var>
<var nr="12">0</var>
<var nr="120">1</var>
<var nr="121">0</var>
<var nr="122">0</var>
<var nr="123">0</var>
<var nr="124">0</var>
<var nr="13">1</var>
<var nr="130">1</var>
<var nr="131">0</var>
.
.
<var nr="31">1</var>
<var nr="32">21</var>
<var nr="33">0</var>
.
.
<var nr="901">0</var>
<var nr="902">0</var>
<var nr="903">0</var>
<var nr="904">0</var>
<var nr="905">0</var>
<var nr="906">0</var>
<var nr="907">1</var>
<var nr="908">0</var>
<var nr="909">21</var>
<var nr="91">0</var>
<var nr="910">0</var>
<var nr="911">0</var>
<var nr="92">0</var>
<var nr="93">0</var>
<var nr="94">0</var>
<var nr="95">0</var>
<var nr="98">0</var>
<var nr="99">8</var>
<var nr="999">0</var>
<playlist zone="0"></playlist>
<track zone="0"></track>
<playlist zone="1"></playlist>
<track zone="1"></track>
<playlist zone="2"></playlist>
<track zone="2"></track>
<playlist zone="3"></playlist>
<track zone="3"></track>
<partylist></partylist>
<partytrack></partytrack>
</status>


Ich habe nun am Beispiel Downlight Küche den Wert aus der xml Datei bereits erfolgreich ausgelesen.

define visu_status HTTPMOD http://192.168.xx.yy/status.xml 30
attr visu_status userattr reading01Name readingsName_DonwlightKueche readingsRegex_DonwlightKueche
attr visu_status reading01Name var
attr visu_status readingsName_DonwlightKueche DonwlightKueche
attr visu_status readingsRegex_DonwlightKueche <var nr="31">([\d\.]+)


Der Status der xml Datei wird erfolgreich ausgelesen.
Wie kann ich nun nach dem auslesen den Status des dummy Device DonwlightKueche aktualisieren, dass der schalter auf on / off springt?

Ellert

#1
HTTPMOD kenne ich nicht genau, aber grundsätzlich müsste es mit DOIF funktionieren, etwa so:
define di DOIF ([visu_status:<Reading, dass den Schaltzustand enthält>] eq "<Schaltzustand on>") (set DonwlightKueche on )
DOELSEIF ([visu_status:<Reading, dass den Schaltzustand enthält>] eq "<Schaltzustand off>") (set DonwlightKueche off )


siehe: DOIF

zurli

Herzlichen Dank

Hat super funktioniert, ich konnte es wie folgt lösen

Licht über fhem ein- / ausschalten mit


define DonwlightKueche_notify notify DonwlightKueche {if (Value("DonwlightKueche") eq "on"){GetFileFromURL 'http://192.168.xx.yy/sendtask.xml?T=0311'}else{GetFileFromURL 'http://192.168.xx.yy/sendtask.xml?T=0310'}}


und dann den Status aus der bestehenden Hausautomation auslesen mit HTTPMOD

define visu_status HTTPMOD http://192.168.xx.yy/status.xml 30
attr visu_status userattr reading01Name readingsName_DonwlightKueche readingsRegex_DonwlightKueche
attr visu_status reading01Name var
attr visu_status readingsName_DonwlightKueche DonwlightKueche
attr visu_status readingsRegex_DonwlightKueche <var nr="31">([\d\.]+)


Die Reading Values aus dem HTTPMOD Ergebnis werden dann mittels DOIF an fhem übergeben
define DownlightKueche_DI DOIF ([visu_status:DonwlightKueche_visu] eq 0) (set DonwlightKueche off) DOELSEIF ([visu_status:DonwlightKueche_visu] eq 1) (set DonwlightKueche on)