ZigBee: Mitlauschen bei Alarmanlage

Begonnen von peterboeckmann, 11 Februar 2017, 11:49:57

Vorheriges Thema - Nächstes Thema

PingPong

#60
Gerne

Internals:
   BUSY       0
   CFGFN
   CHANGED
   DEF        http://user:pwd@192.168.178.21/action/device.htm 30
   Interval   30
   LASTSEND   1496341488.53467
   MainURL    http://user:pwd@192.168.178.21/action/device.htm
   ModuleVersion 3.3.11 - 8.5.2017
   NAME       AlarmZentrale
   NR         319
   STATE      ???
   TRIGGERTIME 1496341518.53169
   TRIGGERTIME_FMT 2017-06-01 20:25:18
   TYPE       HTTPMOD
   addr       http://192.168.178.21:80
   auth       user:pwd
   buf        HTTP/1.1 200 OK
Server: MQX HTTP Climax
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Pragma: no-cache
Connection: close
Content-Type: text/html

<!DOCTYPE HTML>
<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8" /><title>Device Management</title><style type="text/css">
*{font-family:Arial,Helvetica;}
table{border:0;}
table.fm{border-collapse:collapse;border:1px solid #aaa;width:95%;margin:4px 2px;}
table.fm tr td{border-collapse:collapse;border:1px solid #aaa;padding:2px;}
td.ct{text-align:center;}
table.ff td:first-child{font-weight:bold;}
input.sbtn{background-color:#D1D1D1;}
ul{list-style-type:none;margin:0;padding:0;overflow:hidden;}
li{float:left;}
li a{display:block;background-color:#dddddd;padding:.3em;margin:.3em;}
</style></head><body>
<ul><li><a href="index.htm">Welcome</a></li>
<li><a href="control.htm">Control</a></li>
<li><a href="panel.htm">Panel</a></li>
<li><a href="device.htm">Device</a></li>
<li><a href="area.htm">Area</a></li>
<li><a href="user.htm">User</a></li>
<li><a href="history.htm">History</a></li>
<li><a href="capevent.htm">Captured Event</a></li>
<li><a href="rptevent.htm">Reported Event</a></li>
<li><a href="network.htm">Network</a></li>
<li><a href="report.htm">Report</a></li>
<li><a href="upload.htm">Upload</a></li>
<li><a href="ha.htm">HA</a></li>
<li><a href="firmware.htm">Firmware</a></li>
</ul><hr/>
<h1>Device Management</h1>
<form action="device.htm" method=post>
<table class=fm>
<tr><td>Index</td><td>Type</td><td>Name</td><td>Attribute</td><td>Condition</td><td>Battery</td><td>Tamper</td><td>Bypass</td><td>RSSI</td><td>Status</td><td></td></tr>
<tr><td><input name="Z1" value="1" type=checkbox  />1 </td><td>Door Contact</td><td>Terassentür</td><td>Perimeter</td><td></td><td></td><td></td><td></td><td>9</td><td>Close</td><td><a href="deved.htm?Z=1">Edit</a></td></tr>
<tr><td><input name="Z2" value="1" type=checkbox  />2 </td><td>Remote Controller</td><td>Fernbedienung</td><td>Personal Attack</td><td></td><td></td><td></td><td></td><td></td><td></td><td><a href="deved.htm?Z=2">Edit</a></td></tr>
<tr><td><input name="Z3" value="1" type=checkbox  />3 </td><td>IR Camera</td><td>WZ Bewegungsmelder</td><td>Perimeter</td><td>Out Of Order</td><td></td><td></td><td></td><td></td><td></td><td><a href="deved.htm?Z=3">Edit</a></td></tr>
<tr><td><input name="Z4" value="1" type=checkbox  />4 </td><td>Door Contact</td><td>Schlafzimmer rechts</td><td>Perimeter</td><td></td><td></td><td></td><td></td><td>9</td><td>Close</td><td><a href="deved.htm?Z=4">Edit</a></td></tr>
<tr><td><input name="Z5" value="1" type=checkbox  />5 </td><td>Door Contact</td><td>Schlafzimmer links</td><td>Perimeter</td><td></td><td></td><td></td><td></td><td>9</td><td>Close</td><td><a href="deved.htm?Z=5">Edit</a></td></tr>
<tr><td><input name="Z6" value="1" type=checkbox  />6 </td><td>Door Contact</td><td>Haustür</td><td>Entry1</td><td></td><td></td><td>Tamper</td><td></td><td>9</td><td>Close</td><td><a href="deved.htm?Z=6">Edit</a></td></tr>
<tr><td><input name="Z7" value="1" type=checkbox  />7 </td><td>Keypad</td><td>Keypad</td><td></td><td></td><td></td><td></td><td></td><td>9</td><td></td><td><a href="deved.htm?Z=7">Edit</a></td></tr>
</table>
<input name="S" value="Delete" type=submit class=sbtn onclick="return confirm('Are you sure?')"  /> <input name="S" value="Bypass" type=submit class=sbtn onclick="return confirm('Are you sure?')"  /> <input name="S" value="Unbypass" type=submit class=sbtn onclick="return confirm('Are you sure?')"  /> <input name="S" value="Identify" type=submit class=sbtn  /> <input name="S" value="Check Version" type=submit class=sbtn  /> <hr/>
<h3>Surveillance</h3><input name="S" value="Request Media" type=submit class=sbtn  /> <input name="S" value="Request Media (No Flash)" type=submit class=sbtn  /> <hr/>
<h3>Device Control</h3><input name="S" value="Switch On" type=submit class=sbtn  /> <select name="A"><option value="0" selected>Always</option><option value="5" >5 sec</option><option value="10" >10 sec</option><option value="20" >20 sec</option><option value="30" >30 sec</option><option value="40" >40 sec</option><option value="50" >50 sec</option><option value="60" >60 sec</option><option value="70" >70 sec</option><option value="80" >80 sec</option><option value="90" >90 sec</option><option value="100" >100 sec</option><option value="120" >2 min</option><option value="180" >3 min</option><option value="240" >4 min</option><option value="300" >5 min</option><option value="600" >10 min</option><option value="900" >15 min</option><option value="1200" >20 min</option><option value="1500" >25 min</option><option value="1800" >30 min</option><option value="2100" >35 min</option><option value="2400" >40 min</option><option value="2700" >45 min</option><option value="3000" >50 min</option><option value="3300" >55 min</option><option value="3600" >1 hour</option><option value="7200" >2 hour</option><option value="10800" >3 hour</option><option value="14400" >4 hour</option><option value="18000" >5 hour</option><option value="21600" >6 hour</option><option value="25200" >7 hour</option><option value="28800" >8 hour</option><option value="32400" >9 hour</option><option value="36000" >10 hour</option><option value="39600" >11 hour</option><option value="43200" >12 hour</option><option value="46800" >13 hour</option><option value="50400" >14 hour</option><option value="54000" >15 hour</option><option value="57600" >16 hour</option><option value="61200" >17 hour</option><option value="64800" >18 hour</option><option value="68400" >19 hour</option><option value="72000" >20 hour</option><option value="75600" >21 hour</option><option value="79200" >22 hour</option><option value="82800" >23 hour</option><option value="86400" >24 hour</option></select>
<input name="S" value="Dimmer Level" type=submit class=sbtn  /> <select name="B"><option value="0" >0 %</option><option value="10" >10 %</option><option value="20" >20 %</option><option value="30" >30 %</option><option value="40" >40 %</option><option value="50" >50 %</option><option value="60" >60 %</option><option value="70" >70 %</option><option value="80" >80 %</option><option value="90" >90 %</option><option value="100" selected>100 %</option></select>
<br/><input name="S" value="Switch Off" type=submit class=sbtn  /> <br/><input name="S" value="Switch Toggle" type=submit class=sbtn  /> <br/><input name="S" value="Up/Lock" type=submit class=sbtn  /> <input name="S" value="Down/Unlock" type=submit class=sbtn  /> <input name="S" value="Stop" type=submit class=sbtn  /> <br/><br/><input name="S" value="Group Switch On" type=submit class=sbtn  /> <select name="C"><option value="0" selected>Always</option><option value="5" >5 sec</option><option value="10" >10 sec</option><option value="20" >20 sec</option><option value="30" >30 sec</option><option value="40" >40 sec</option><option value="50" >50 sec</option><option value="60" >60 sec</option><option value="70" >70 sec</option><option value="80" >80 sec</option><option value="90" >90 sec</option><option value="100" >100 sec</option><option value="120" >2 min</option><option value="180" >3 min</option><option value="240" >4 min</option><option value="300" >5 min</option><option value="600" >10 min</option><option value="900" >15 min</option><option value="1200" >20 min</option><option value="1500" >25 min</option><option value="1800" >30 min</option><option value="2100" >35 min</option><option value="2400" >40 min</option><option value="2700" >45 min</option><option value="3000" >50 min</option><option value="3300" >55 min</option><option value="3600" >1 hour</option><option value="7200" >2 hour</option><option value="10800" >3 hour</option><option value="14400" >4 hour</option><option value="18000" >5 hour</option><option value="21600" >6 hour</option><option value="25200" >7 hour</option><option value="28800" >8 hour</option><option value="32400" >9 hour</option><option value="36000" >10 hour</option><option value="39600" >11 hour</option><option value="43200" >12 hour</option><option value="46800" >13 hour</option><option value="50400" >14 hour</option><option value="54000" >15 hour</option><option value="57600" >16 hour</option><option value="61200" >17 hour</option><option value="64800" >18 hour</option><option value="68400" >19 hour</option><option value="72000" >20 hour</option><option value="75600" >21 hour</option><option value="79200" >22 hour</option><option value="82800" >23 hour</option><option value="86400" >24 hour</option></select>
<select name="D"><option value="1" selected>1</option><option value="2" >2</option><option value="3" >3</option><option value="4" >4</option><option value="5" >5</option><option value="6" >6</option><option value="7" >7</option><option value="8" >8</option></select>
<br/><input name="S" value="Group Switch Off" type=submit class=sbtn  /> <select name="E"><option value="1" selected>1</option><option value="2" >2</option><option value="3" >3</option><option value="4" >4</option><option value="5" >5</option><option value="6" >6</option><option value="7" >7</option><option value="8" >8</option></select>
<hr/>
<h3>Program Siren</h3><input name="S" value="Learn Siren" type=submit class=sbtn  /> <br/><input name="S" value="Siren Tamper" type=submit class=sbtn  /> <select name="F"><option value="0" selected>Off</option><option value="1" >On</option></select>
<br/><input name="S" value="Confirm" type=submit class=sbtn  /> <select name="G"><option value="0" selected>Off</option><option value="1" >On</option></select>
<br/><input name="S" value="Entry Sound" type=submit class=sbtn  /> <select name="H"><option value="0" selected>Off</option><option value="1" >On</option></select>
<br/><input name="S" value="Test" type=submit class=sbtn onclick="return confirm('Are you sure?')"  /> <select name="I"><option value="0" selected>Off</option><option value="1" >On</option></select>
</form>
<hr/>
<h3>Learning</h3><form action="devlr.htm" method=post>
<input name="S" value="Start Learning" type=submit class=sbtn  /> </form>
<form action="devwk.htm" method=post>
<input name="S" value="Start Walk Test" type=submit class=sbtn  /> </form>
<form action="device.htm" method=post>
<input name="S" value="Add RF Device" type=submit class=sbtn  /> Zone:<select name="ZZ"><option value="1" >1</option><option value="2" >2</option><option value="3" >3</option><option value="4" >4</option><option value="5" >5</option><option value="6" >6</option><option value="7" >7</option><option value="8" selected>8</option><option value="9" >9</option><option value="10" >10</option><option value="11" >11</option><option value="12" >12</option><option value="13" >13</option><option value="14" >14</option><option value="15" >15</option><option value="16" >16</option><option value="17" >17</option><option value="18" >18</option><option value="19" >19</option><option value="20" >20</option><option value="21" >21</option><option value="22" >22</option><option value="23" >23</option><option value="24" >24</option><option value="25" >25</option><option value="26" >26</option><option value="27" >27</option><option value="28" >28</option><option value="29" >29</option><option value="30" >30</option><option value="31" >31</option><option value="32" >32</option><option value="33" >33</option><option value="34" >34</option><option value="35" >35</option><option value="36" >36</option><option value="37" >37</option><option value="38" >38</option><option value="39" >39</option><option value="40" >40</option></select>
Code:<input name="C" value="" type=text maxlength=31 />Name:<input name="N" value="" type=text maxlength=31 /></form>
<hr/>
&copy;2016 Climax Tech. Co., Ltd.</body></html>

   code       200
   conn
   data
   displayurl http://user:pwd@192.168.178.21/action/device.htm
   header
   host       192.168.178.21
   httpheader HTTP/1.1 200 OK
Server: MQX HTTP Climax
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Pragma: no-cache
Connection: close
Content-Type: text/html
   httpversion 1.0
   hu_blocking 0
   hu_filecount 1015
   hu_portSfx
   ignoreredirects 0
   loglevel   4
   path       /action/device.htm
   protocol   http
   redirects  0
   timeout    2
   url        http://user:pwd@192.168.178.21/action/device.htm
   value      0
   QUEUE:
   Readings:
   Request:
     data
     header
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://user:pwd@192.168.178.21/action/device.htm
     value      0
   Sslargs:
Attributes:
   reading01Name Haustür
   reading01Regex <td>Haustür</td><td>Entry1</td><td></td><td></td><td></td><td></td><td>[\d]</td><td>([^\d]+)</td>
   userattr   reading01Name reading01Regex


Auf welchen Wert hast Du denn das StateFormat gesetzt?

peterboeckmann

Hallo Marc,

an Deinem Haustür-Kontakt hat der Sabotage-Kontakt ausgelöst. Daher steht "Tamper" in der Tabellenzeile.
Dadurch kann der Regex nicht gefunden wurde.

Probiere doch mal diesen Regex:
<td>Haustür</td><td>[a-zA-Z0-9]*</td><td>[a-zA-Z0-9]*</td><td>[a-zA-Z0-9]*</td><td>[a-zA-Z0-9]*</td><td></td><td>[a-zA-Z0-9]*</td><td>([a-zA-Z0-9]*)</td>

Er besagt, dass in jeder Tabellenzelle etwas drin stehen darf, aber nicht muss.

Viele Grüße,
Peter

PingPong

jetzt klappt's, klasse :-)
Danke.
Auch wenn ich's noch nicht verstehe :-(

Dann werde ich jetzt mal versuchen, die anderen Sensoren anzusprechen...
Ich bin zuversichtlich, dass ich mich noch ein paar Mal melde :-)
Danke.
Kannst Du mir noch was zu dem attr StateFormat sagen?

peterboeckmann

Hi,

Zitat von: PingPong am 01 Juni 2017, 21:10:49
Kannst Du mir noch was zu dem attr StateFormat sagen?

mein stateFormat sieht so aus:
Terasse: Terrassentuer
WoZiFenster: WoZiFensterWest
Küche West: KuechenfensterWest
Küche Nord: KuechenfensterNord
GästeWC: FensterGaesteWC
Abstellraum: FensterAbstellraum
Haustür: Haustuer
Treppe: FensterTreppe
Bad oben: Badfenster
SchlaZi: SchlaZiFenster
Dach: Dachfenster


Alles, was darin einem ReadingName entspricht wird durch den entsprechenden Wert ersetzt.
Wichtig: Umlaute und Bindestriche funktionieren im ReadingName nicht korrekt. Aber die kannst Du ja frei vergeben.

PingPong

Hmmm.... Nee :-(

[code]reading01Name
Haustuer
deleteattr
reading01Regex
<td>Haustür</td><td>Entry1</td><td></td><td></td><td></td><td></td><td>[\d]</td><td>([^\d]+)</td>
deleteattr
room
Sicherheit
deleteattr
stateFormat
Haustür: Haustuer
deleteattr
userattr
reading01 reading01Name
deleteattr
[/code]

Jetzt zeigt er Haustür: Haustür

Wenn ich Reading01Regex bearbeiten will zeigt er mir zudem
"TypeError: null is not an object (evaluating 'selVal.length')"

peterboeckmann

Hmmmm.

Das ist merkwürdig.
Wenn Dein stateFormat "Haustür: Haustuer" ist, sollte er in keinem Falle "Haustür: Haustür" anzeigen.
Entweder zeigt er "Haustür: Close" oder "Haustür: Haustuer" (was auch falsch wäre).

Das Problem mit dem Regex bearbeiten hatte ich auch mal.
Versuche es mal bitte über den Link "Raw definition" ganz unten.

HTH,
Peter

PingPong

Entschuldige bitte, kleiner aber gemeiner Tippfehler.
Er zeigt "Haustür: Haustuer".

Ich schau's mir heute abend nochmal in Ruhe an.

VG
Marc

PingPong

#67
Interessant... Über Nacht hat sich jetzt das Problem mit dem StateFormat von allein behoben.
Jetzt wird korrekt "Haustür: Open" angezeigt :-) *freu

Darf ich Dich mit noch einer Frage nerven?
Du hast ein paar Posts weiter oben geschrieben, man könne auch je Sensor ein dummy device definieren.
Hast Du hier auch noch nen Tipp für mich, wie ich das bewerkstelligen könnte?

peterboeckmann

Moin Marc,

das mit den dummys war nur eine theoretische Überlegung von mir.

Man könnte bspw. einen dummy für die Haustür definieren
define Haustuer dummy
und dann per notify den Wert des readings Haustuer am device AlarmZentrale auf den state des dummy Haustuer übertragen.

Technisch sehe ich da keinen Vorteil, man könnte die Anzeige aber etwas schöner gestalten als ich es mit dem stateFormat getan habe.

Viele Grüße,
Peter

Gesendet von meinem SM-G930F mit Tapatalk


mitdra

#69
Ich nutze das DOIF um die Kontakte abzubilden:

define Haustuer DOIF ([AlarmZentrale:Haustür] eq "Open")
DOELSE
([AlarmZentrale:Haustür] eq "Close")


und dann noch das Symbol hinzupacken:
attr Haustuer devStateIcon Open:fts_door_open@red  Close:fts_door@green

die regex hole ich mit:
Haustür.*(Open|Close)

PingPong

#70
Vielen Dank erstmal, dass ich soviel Geduld aufbringt  ;)
Vermutlich merkt man, dass dies völliges Neuland für mich ist.
Ich habe jetzt den Status für die einzelnen Sensoren wie beschrieben ausgelesen und bekomme diesen auch korrekt angezeigt.
Jetzt würde ich jedoch gerne
Zitatund dann per notify den Wert des readings Haustuer am device AlarmZentrale auf den state des dummy Haustuer übertragen.
Leider bekomme ich es allein aber mal wieder nicht hin. Könntet Ihr mir nochmal unter die Arme greifen?
Ich vermute das von mitdra beschriebene doif macht sowas ähnliches???

Und noch eine Frage. Würde den generellen Status ("Current Mode:Disarm" ?) gerne verwenden, um zu ermitteln, ob jemand zu Hause anwesend ist.
Beim Wechsel zu "active" soll geprüft werden, ob noch Licht eingeschaltet ist, und falls ja, dieses ausgeschaltet werden.
Andersherum soll beim Wechsel zu "inactive" nach einer bestimmten Uhrzeit das Licht automatisch eingeschaltet werden.
Geht das?

Liebe Grüße

mitdra

#71
Hier ist ein einfacher DOIF Dummy:


define Haustuer DOIF ##

Haustuer heisst dann der Dummy

und die beiden Attribute hinzufügen:

attr state [Alarmanlage:Haustür]
devstateIcon: Open:fts_door_open@red Close:fts_door@green


Alarmanlage : so, wie du sie via HTTPMOD angelegt hast
Haustür: so, wie die Kontakte in der Blaupunkt / Lupuc Anlage benannt sind


Für die Prüfung ob Anlage scharf / unscharf würde ich ebenfall einen Dummy anlegen und dann via DOIF abfragen, wenn scharf, dann alle Lichter abends um ##Uhrzeit ausschalten.

PingPong

#72
geschafft :-)
1000 Dank

Jetzt fehlt mir "nur" noch die generelle Statusabfrage, ob die Alarmanlage scharf geschaltet ist oder nicht.

peterboeckmann

Hi Marc,

Zitat von: PingPong am 16 Juni 2017, 22:32:11
Jetzt fehlt mir "nur" noch die generelle Statusabfrage, ob die Alarmanlage scharf geschaltet ist oder nicht.

das ist auch relativ einfach, du brauchst aber ein zusätzliches Device. Ich habe es AlarmStatus genannt:

define AlarmStatus HTTPMOD http://USER:PASSWORT@192.168.178.99/action/control.htm 30
attr AlarmStatus userattr reading01Name reading01Regex
attr AlarmStatus event-on-change-reading .*
attr AlarmStatus reading01Name Modus
attr AlarmStatus reading01Regex Current Mode:([a-zA-Z0-9]*)
attr AlarmStatus stateFormat Modus


Viele Grüße,
Peter

peterboeckmann

Nochmal ein Hallo in die Runde!

Jetzt wäre es natürlich noch das i-Tüpfelchen, die Alarmanlage auch über FHEM scharf und unscharf schalten zu können.

Dazu bietet die Seite http://USER:PASSWORT@192.168.178.99/action/control.htm drei HTML-Buttons, die in einem POST-Formular eingebettet sind:

<form action="control.htm" method=post>
Current Mode:Disarm<br/><input name="S" value="Disarm" type=submit class=sbtn  /> <input name="S" value="Away Arm" type=submit class=sbtn  /> <input name="S" value="Home Arm" type=submit class=sbtn  /> <br/><hr/>
</form>


Dafür habe ich an meinem HTTPMOD-Device "AlarmStatus" schon mal folgendes gesetzt:
attr AlarmStatus webCmd Away Arm:Home Arm:Disarm

Kann mir jemand einen Tipp geben, wie ich jetzt das POST auslösen kann?
Irgendwie verstehe ich die Doku wohl falsch. Mit folgender attr-Kombination funktioniert es nicht:

attr AlarmStatus set01Data {"set" :{"S" :"Away Arm" }}
attr AlarmStatus set01Name Away Arm
attr AlarmStatus set01TextArg 1
attr AlarmStatus set02Data {"set" :{"S" :"Home Arm" }}
attr AlarmStatus set02Name Home Arm
attr AlarmStatus set02TextArg 1
attr AlarmStatus set03Data {"set" :{"S" :"Disarm" }}
attr AlarmStatus set03Name Disarm
attr AlarmStatus set03TextArg 1


Viele Grüße,
Peter