Lupusec Alarmanlage XT2

Begonnen von horni, 05 Dezember 2016, 13:13:18

Vorheriges Thema - Nächstes Thema

elektrikpe2

#30
Hallo, danke für die schnelle Antwort. Ja, die Thematik der Heizungssensoren von Lupusec sind mir bekannt und ich habe die in die Version 2017 umgetauscht bekommen. Sie machen jetzt das, was sie sollen. Soweit Aktionen in der Lupusec greifbar sind, mache ich das mit Aktion-URL. Für die Temperatursensoren-Werte zu erhalten muss ich also auslesen. Ich bin den Weg gegangen, der von @Kenneth skizziert wurde. Leider erhalte ich aber keine Werte. Das mag daran liegen, dass ich tatsächlich die Werte hinter dem status brauch die sich nach dem "{WEB_MSG_TS_DEGREE}   23.5 "brauche, bzw. auch den Wert {WEB_MSG_TRV_AUTO} und {WEB_MSG_TRV_SETPOINT} 23.0. Das ist der tatsächlich gemessene Wert, die Stellung des Thermostates und der gewählte Wert. Ich habe den folgenden Code benutzt, bekomme aber keine Werte. Ist m.E. für einen Newbie ziemlich tricki. Vielleicht kann mir jemand helfen. Code und Werte:
define Temperatur_Sensoren HTTPMOD http://user:password@xxx.xxx.xxx.xx/action/deviceListGet 60

attr Temperatur_Sensoren userattr reading01Map reading01Name reading01Regex
attr Temperatur_Sensoren enableControlSet 1
attr Temperatur_Sensoren event-on-change-reading Temperatur_Bad
attr Temperatur_Sensoren reading01Name Temperatur_Bad
attr Temperatur_Sensoren reading01Regex (HeizBadFenster)", attr : \"([^,]*)", (status) : \"([^,]*)"


{"area": 1, "zone": 25, "type": 79, "type_f": "{D_TYPE_79}", "name": "HeizMT",  "cond": "", "cond_ok": "1", "battery": "", "battery_ok": "1",  "tamper": "", "tamper_ok": "1", "bypass": "{WEB_MSG_NO}", "rssi": "{WEB_MSG_STRONG} 9",  "resp_mode": [0,0,0,0,0,0], "ammeter": "0", "ver": "TRV_00.00.03.02TC",  "hue": "-1", "sat": "-1",  "status": "{WEB_MSG_TS_DEGREE} 23.5 {WEB_MSG_TRV_MANUAL} {WEB_MSG_TRV_SETPOINT} 22.0", "sid": "ZS:8e9501", "su": 1, "alarm_status": "", "status_ex": "0"},

{"area": 1, "zone": 27, "type": 79, "type_f": "{D_TYPE_79}", "name": "HeizBadFenster",  "cond": "", "cond_ok": "1", "battery": "", "battery_ok": "1",  "tamper": "", "tamper_ok": "1", "bypass": "{WEB_MSG_NO}", "rssi": "{WEB_MSG_STRONG} 9",  "resp_mode": [0,0,0,0,0,0], "ammeter": "0", "ver": "TRV_00.00.03.02TC",  "hue": "-1", "sat": "-1",  "status": "{WEB_MSG_TS_DEGREE} 22.0 {WEB_MSG_TRV_AUTO} {WEB_MSG_TRV_SETPOINT} 23.0", "sid": "ZS:57df01", "su": 1, "alarm_status": "", "status_ex": "0"}


Schonmal Danke.

LG Peter

elektrikpe2

Hallo,

habe mich heute mal an die Regex für meine Zwecke gemacht. Rausgekommen ist das:


attr Temperatur_Sensoren reading01Name BadIstTemp
attr Temperatur_Sensoren reading01Regex (HeizBadFenster)+.*({WEB_MSG_TS_DEGREE)\}\t([^ }]*)
attr Temperatur_Sensoren reading02Name BadSollTemp
attr Temperatur_Sensoren reading02Regex
(HeizBadFenster)+.*({WEB_MSG_TRV_SETPOINT)\}\t([^ "]*)


Ich habe aber Probleme mit dem Httmod (s.o). Gebe ich den Befehl in den Browser ein bekomme ich einen JSON Error. Nehme ich die Rohdaten, um die regulären Ausdrücke in regex zu checken bekomme ich je nach Anbieter auch unterschiedliche Werte zurückgeliefert. Mit den Rohdaten funktionieren die Regex. Evtl. müssten meine Fragen in den HTTMOD Thread. Aber hier ist bestimmt auch jemand, der Bescheid weiß



elektrikpe2

Hallo, ich schon wieder, aber ein Stück weiter. Der HTTPMOD funktioniert jetzt. Er ging nicht, weil der reg. Ausdruck, den ich vorher erstellt hatte, keine Antwort brachte. Jetzt habe ich den abgeändert und es kommt jetzt auch ein Wert attr OG_Temperaturen reading01Regex DEGREE\}\t([^ }]*)
attr OG_Temperaturen reading01Name IstTemp

In der Aufgabenstellung habe ich 4 Thermostate die mir die Werte aus Lupusec liefern. Teste ich den reg. Ausdruck mit den Online regexe Tester bekomme ich natürlich immer die 4 Temperaturwerte der 4 Thermostate. Jetzt hänge ich wieder im Verständnisproblem, wie ich das in FHEM abbilde. Der reg.Ausdruck bringt mir immer nur den ersten Wert. Bitte um Hilfe.

elektrikpe2

#33
Hallo,

habe mal weitergearbeitet und bin jetzt für mein Problem zu einer Lösung gekommen und falls jemand das auch benötigt stelle ich die hier ein. Zunächst lass ich mir per Action-URL von der Lupusec die Zustände senden. Hat den Vorteil, dass die nur kommen, wenn sich auch was auf der Alarmanlage tut.

Für die Werte der Thermostate mache ich einen HTTPMOD und lese mittels regex aus. Habe mich dazu etwas mit regex befasst und über das Forum herausgefunden, wie man modifier für einen regex syntaktisch dazufügt. Ob das regex jetzt wirklich sehr elegant ist, kann ich noch nicht einmal sagen, aber es holt aus dem entsprechenden Thermostat die Ist- und Sollwerte. Ich hatte beim regex das Problem, dass immer ein Wert am Ende der Gesamt-Device-List abgeholt wurde. Um dies einzugrenzen musste ich mit der "sid" string-Suche in dem jeweiligen Gerät (hier das Thermostat) den regex abschließen. Leider kann man im Moment den Modifier "g" nicht setzen. Hierbei wäre der regexe etwas einfacher gewesen. Bei den readings ist dann immer im *Tmp-3 der Wert, den ich brauche. Für den regex brauchte ich zwingend Modifier "s". Übrigens konnte ich mit dem regex von Kenneth meine XT2 plus nicht mehr auslesen, da sich der gesamte Inhalt der Device-List der XT2 plus anders darstellte (Ausschnitt der device-List einige Antworten vorher). Hier also meine Lösung:

define OG_Temperaturen HTTPMOD http://user:password@xxx.xxx.xxx.xx/action/deviceListGet 3600

attr OG_Temperaturen userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05Name reading05Regex reading06Name reading06Regex

attr OG_Temperaturen enableControlSet 1

attr OG_Temperaturen event-on-change-reading BadIstTemp, BadSollTemp, MTIstTemp, MTSollTemp, NoahIstTemp, NoahSollTemp

attr OG_Temperaturen reading01Name BadIstTemp
attr OG_Temperaturen reading01Regex (?s)(HeizBadFenster)+.*({WEB_MSG_TS_DEGREE})([^ }]*) +.*("sid": "ZS:57df01)
attr OG_Temperaturen reading02Name BadSollTemp
attr OG_Temperaturen reading02Regex
(?s)(HeizBadFenster)+.*({WEB_MSG_TRV_SETPOINT})([^ ]*) +.*("sid": "ZS:57df01)
attr OG_Temperaturen reading03Name MTIstTemp
attr OG_Temperaturen reading03Regex (?s)(HeizMT)+.*({WEB_MSG_TS_DEGREE})([^ }]*) +.*("sid": "ZS:8e9501)
attr OG_Temperaturen reading04Name MTSollTemp
attr OG_Temperaturen reading04Regex (?s)(HeizMT)+.*({WEB_MSG_TRV_SETPOINT})([^ ]*) +.*("sid": "ZS:8e9501)
attr OG_Temperaturen reading05Name NoahIstTemp
attr OG_Temperaturen reading05Regex (?s)(HeizNoah)+.*({WEB_MSG_TS_DEGREE})([^ }]*) +.*("sid": "ZS:d3ae01)
attr OG_Temperaturen reading06Name NoahSollTemp
attr OG_Temperaturen reading06Regex (?s)(HeizNoah)+.*({WEB_MSG_TRV_SETPOINT})([^ ]*) +.*("sid": "ZS:d3ae01)


Die Readings dazu:
READINGS:
     2018-01-24 13:13:53   BadIstTemp-1    HeizBadFenster
     2018-01-24 13:13:53   BadIstTemp-2    {WEB_MSG_TS_DEGREE}
     2018-01-24 13:13:53   BadIstTemp-3    22.5
     2018-01-24 13:13:53   BadIstTemp-4    "sid": "ZS:57df01
     2018-01-24 13:13:53   BadSollTemp-1   HeizBadFenster
     2018-01-24 13:13:53   BadSollTemp-2   {WEB_MSG_TRV_SETPOINT}
     2018-01-24 13:13:53   BadSollTemp-3    19.0",
     2018-01-24 13:13:53   BadSollTemp-4   "sid": "ZS:57df01
     2018-01-24 13:13:53   MTIstTemp-1     HeizMT
     2018-01-24 13:13:53   MTIstTemp-2     {WEB_MSG_TS_DEGREE}
     2018-01-24 13:13:53   MTIstTemp-3      22.0
     2018-01-24 13:13:53   MTIstTemp-4     "sid": "ZS:8e9501
     2018-01-24 13:13:53   MTSollTemp-1    HeizMT
     2018-01-24 13:13:53   MTSollTemp-2    {WEB_MSG_TRV_SETPOINT}
     2018-01-24 13:13:53   MTSollTemp-3    22.0",
     2018-01-24 13:13:53   MTSollTemp-4    "sid": "ZS:8e9501
     2018-01-24 13:13:53   NoahIstTemp-1   HeizNoah
     2018-01-24 13:13:53   NoahIstTemp-2   {WEB_MSG_TS_DEGREE}
     2018-01-24 13:13:53   NoahIstTemp-3    19.5
     2018-01-24 13:13:53   NoahIstTemp-4   "sid": "ZS:d3ae01
     2018-01-24 13:13:53   NoahSollTemp-1  HeizNoah
     2018-01-24 13:13:53   NoahSollTemp-2  {WEB_MSG_TRV_SETPOINT}
     2018-01-24 13:13:53   NoahSollTemp-3  18.5",
     2018-01-24 13:13:53   NoahSollTemp-4  "sid": "ZS:d3ae01


So jetzt geht es an einen DOIF mit sunset/sunrise und was weiß ich noch für Zeiten um bei Alarm alle Rollos hochzufahren und Lichter anzumachen und bei Abschaltung des Alarms wieder alles zurück. Die einfache Form (also immer hoch/an) funktioniert schon.

VG Peter

elektrikpe2

#34
Es endet nun hier. Dank der Hilfe zum Thema Modifier dem Regex mitgeben habe ich nun doch zur einfacheren Lösung gefunden.
Zitathttps://forum.fhem.de/index.php/topic,83205.msg754658.html#msg754658
. Den "g" Modifier muss mit dem attr readingXXRegOpt mitgegeben werden. So habe ich nun meine elegante Lösung:
attr OG_Temperaturen userattr reading01Name reading01Regex reading02Name reading02Regex
attr OG_Temperaturen reading01Name IstTemp
attr OG_Temperaturen reading01RegOpt g
attr OG_Temperaturen reading01Regex DEGREE}([^ }]*)
attr OG_Temperaturen reading02Name SollTemp
attr OG_Temperaturen reading02RegOpt g
attr OG_Temperaturen reading02Regex SETPOINT}([^ "]*)


Die Readings: 2018-01-24 14:57:40   IstTemp-1        22.5
     2018-01-24 14:57:40   IstTemp-2        22.25
     2018-01-24 14:57:40   IstTemp-3        19.25
     2018-01-24 14:57:40   IstTemp-4        22.75


Ich hoffe das wars. VG Peter

Herry-77

Hallo

ich versuche gerade ebenfalls die Sensorliste meine XT1 per HTTPMOD auszulesen und hab mal eine grundsätzliche Anfängerfrage.

Wie stelle ich den Output meines HTTPMOD da um dann die Readings mit Name und RegEx zu erstellen?
1.
Der HTTPMOD ist eingerichtet und hat auch Verbindung.

define XT1_sensorlist HTTPMOD http://user:pw@MeneIP/action/sensorListGet 60

2.
Wie bekomme ich aber nun die Ausgabe wie hier im Beispiel von Gerd zu sehen ist.


/*-secure-
{ senrows : [
{no : "1", type : "Rauchmelder", zone : "1", name : "Unten-SZ", attr : "",cond : "", battery : "", tamp : "", bypass : "Inaktiv"},
{no : "2", type : "Fernbedienung", zone : "2", name : "FB Anita", attr : "Med. Notfall", cond : "", battery : "", tamp : "", bypass : "Inaktiv"},
{no : "3", type : "Rauchmelder", zone : "3", name : "K_FLUR", attr : "",cond : "", battery : "", tamp : "", bypass : "Inaktiv"},
{no : "4", type : "Rauchmelder", zone : "4", name : "K_EDV", attr : "",cond : "", battery : "", tamp : "", bypass : "Inaktiv"},
{no : "5", type : "Wassermelder", zone : "5", name : "Waschküche", attr : "",cond : "", battery : "", tamp : "", bypass : "Inaktiv"},
{no : "6", type : "Rauchmelder", zone : "6", name : "K_Dustin", attr : "",cond : "Außer Betrieb", battery : "", tamp : "", bypass : "Inaktiv"},
{no : "7", type : "Rauchmelder", zone : "7", name : "Unten_Dust", attr : "",cond : "Außer Betrieb", battery : "", tamp : "", bypass : "Inaktiv"},
{no : "8", type : "Rauchmelder", zone : "8", name : "Unten_WZ", attr : "",cond : "", battery : "", tamp : "", bypass : "Inaktiv"},
{no : "9", type : "Rauchmelder", zone : "9", name : "Anita_Flur", attr : "",cond : "", battery : "", tamp : "", bypass : "Inaktiv"},
{no : "10", type : "Rauchmelder", zone : "10", name : "Anita_SZ", attr : "",cond : "", battery : "", tamp : "", bypass : "Inaktiv"},
{no : "11", type : "Fernbedienung", zone : "11", name : "FB UNTEN", attr : "Med. Notfall", cond : "", battery : "", tamp : "", bypass : "Inaktiv"},
{no : "12", type : "Türkontakt", zone : "12", name : "Terasse", attr : "Home Modus", cond : "", battery : "", tamp : "", bypass : "Inaktiv"},
{no : "13", type : "Türkontakt", zone : "13", name : "Schlaf_F", attr : "Einbruch", cond : "", battery : "", tamp : "", bypass : "Inaktiv"},
{no : "14", type : "Funksteckdose Plus", zone : "14", name : "Steckdose ", attr : "",cond : "An, 140.0W", battery : "", tamp : "", bypass : "Inaktiv"},
{no : "15", type : "Wassermelder", zone : "15", name : "Aquarium", attr : "",cond : "", battery : "", tamp : "", bypass : "Inaktiv"},
{no : "16", type : "Rauchmelder", zone : "16", name : "Gas", attr : "",cond : "", battery : "", tamp : "", bypass : "Inaktiv"}]
}
*/



3.
Jetzt würde ich gerne eine Reading erstellen was mir zum Beispiel den Zustand (cond :) vom No13 Türkontakt  anzeigt.




Jochen1977

Hallo,

ich hatte auch die XT1 im Einsatz und war somit nicht in der Lage mit Action URL zu arbeiten. Diese Zentrale ist seitens Lupus nun durch die neue XT1 plus ersetzt worden und diese kann Action URLs.

Ohne hier Werbung treiben zu wollen ein Hinweis an die XT1 Besitzer: Es gibt gerade eine Austauschaktion von Lupus. Bei Rückgabe der XT1 bekommt man die XT1plus zum Sonderpreis. Evtl. hilft das dem Einen oder Anderen hier.

Gruß Jochen