Autor Thema: HTTPMOD Anwendungsbeispiele  (Gelesen 4028 mal)

Offline StefanStrobel

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1044
HTTPMOD Anwendungsbeispiele
« am: 08 August 2016, 21:56:36 »
Hallo,

falls es noch jemand brauchen kann:
Ich wollte per HTTPMOD die Aufnahmefunktion einer Überwachungskamera in der QNAP Surveillance Station steuern.
Leider verwendet QNAP hier zwei parallele session ids, was die Sache nicht besonders leicht macht. Eine wird in JavaScript gesetzt und später als Cookie mitgeschickt, die andere ist ein URL-Parameter.

Da es zwei verschiedene Session-IDs sind, kann man es nicht einfach mit sidRegex verarbeiten und da das Cookie nicht per Set-Cookie gesetzt wird, geht auch enableCookies nicht.

Ich habe es daher manuell mit HTTPMOD Replacements gelöst und möchte an diesem Beispiel noch mal auf deutsch erklären wie das funktionieren kann:

define nvr HTTPMOD http://192.168.x.y/ 0

attr nvr set01Name recording
attr nvr set01URL https://192.168.x.y/cgi-bin/surveillance/apis/camera_configuration.cgi?sid=%sid%
attr nvr set01Header1 Cookie: nvr_auth_data=%auth%
attr nvr set01Data act=set_settings&cam_index=0&model=0000000000000001&name=Maginon&ip=192.168.a.b&port=80&rtsp_port=554&wan_ip=&wan_port=80&rtsp_wanport=554&account=CamUser&password=geheim2&enable_recording=$val&admin_password=&guest_password=&http_video_url=%2Fvideostream.cgi

attr nvr httpVersion 1.1
attr nvr sslArgs SSL_verify_mode,SSL_VERIFY_NONE

attr nvr reAuthRegex error_code":9000
attr nvr sid01Data act=login&user=admin&pwd=geheim1
attr nvr sid01ParseResponse 1
attr nvr sid01URL https://192.168.x.y/cgi-bin/surveillance/apis/user.cgi

attr nvr reading01Name sid
attr nvr reading01Regex "sid":"([^"]+)"
attr nvr replacement01Regex %sid%
attr nvr replacement01Mode reading
attr nvr replacement01Value sid

attr nvr reading02Name auth
attr nvr reading02Regex "auth_data":"([^"]+)"
attr nvr replacement02Regex %auth%
attr nvr replacement02Mode reading
attr nvr replacement02Value auth

Mit
set nvr recording 1
set nvr recording 0

kann jetzt das Recording für Kamera 1 in der Kamera-Konfiguration an und ausgeschaltet werden.

Im einzelnen:
define nvr HTTPMOD http://192.168.x.y/ 0definiert das Gerät ohne zyklische Abfragen. Aktivitäten sollen ja nur durch einen set-Befehl ausgelöst werden.

attr nvr set01Name recording
attr nvr set01URL https://192.168.x.y/cgi-bin/surveillance/apis/camera_configuration.cgi?sid=%sid%
attr nvr set01Header1 Cookie: nvr_auth_data=%auth%
attr nvr set01Data act=set_settings&cam_index=0&model=0000000000000001&name=Maginon&ip=192.168.a.b&port=80&rtsp_port=554&wan_ip=&wan_port=80&rtsp_wanport=554&account=CamUser&password=geheim2&enable_recording=$val&admin_password=&guest_password=&http_video_url=%2Fvideostream.cgi
definiert den Set-Befehl mit der URL, die aufgerufen werden muss, den nötigen Headern und den Post-Daten.
Darin finden drei Ersetzungen statt:
1) $val wird durch den Set-Wert (0/1) ersetzt.
2) %sid% wird durch eine manuelle Ersetzung ersetzt (siehe später)
3) %auth% wird durch das Authentisierungs-Token ersetzt (ebenfalls später)

attr nvr httpVersion 1.1
attr nvr sslArgs SSL_verify_mode,SSL_VERIFY_NONE
Damit HTTP1.1 verwendet wird und keine Zertifikate geprüft werden. Das ist suboptimal und statt dessen sollte besser ein gültiges Zertifikate für das Web-Interface des QNAP verwendet werden.

attr nvr reAuthRegex error_code":9000
attr nvr sid01Data act=login&user=admin&pwd=geheim1
attr nvr sid01ParseResponse 1
attr nvr sid01URL https://192.168.x.y/cgi-bin/surveillance/apis/user.cgi

Das ist jetzt der Teil für das Einloggen. Die ReAuthRegex zeigt HTTPMOD woran es erkennen kann, dass keine gültige Session existiert. Wenn diese regex bei einem ersten Set-Versuch auf das Ergebnis matcht, werden die Login-Daten per post an die angegebene URL gesendet. Das Ergebnis soll dann geparsed werden, so dass die beiden Readings für %sid% und %auth% aus dem Ergebnis extrahiert werden können.

attr nvr reading01Name sid
attr nvr reading01Regex "sid":"([^"]+)"
definiert das erste Reading - die sid aus dem HTTP Body, die später als Cookie gesendet werden soll.

attr nvr replacement01Regex %sid%
attr nvr replacement01Mode reading
attr nvr replacement01Value sid

definiert das Replacement, mit dem im obigen Set im Header das Reading sid eingebaut wird.

Entsprechend wird mit dem zweiten Reading verfahren.

Ich hoffe jemand kann es brauchen.

Wenn Ihr andere Anwendungsbeispiele habt, könnten wir die vielleicht hier sammeln und dann ins Wiki übertragen.

Gruss
    Stefan


Offline Sky

  • Full Member
  • ***
  • Beiträge: 170
Antw:HTTPMOD Anwendungsbeispiele
« Antwort #1 am: 01 Januar 2017, 18:00:25 »
Hallo Stefan ,

klingt schon seht gut ,hast Du eine Idee wie man von der QNAP Surveillance Station Kamerabilder in Fhem einbinden kann ?


Offline StefanStrobel

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1044
Antw:HTTPMOD Anwendungsbeispiele
« Antwort #2 am: 02 Januar 2017, 15:49:00 »
Hallo Sky,

damit habe ich mich noch nicht beschäftigt.
Mir ging es bisher nur um die Steuerung.

Gruss
    Stefan

Offline okenny

  • Jr. Member
  • **
  • Beiträge: 74
Antw:HTTPMOD Anwendungsbeispiele
« Antwort #3 am: 30 April 2017, 23:26:57 »
Hi Stefan

Danke, funktioniert deine Anbindung noch mit dem neuesten QTS?
FHEM auf NUC/Ubuntu;3XRPIs (MYSQL+FHEMtoFHEM für GPIO), HUE Lampen, Baumarkt Steckdosen Sender auf RPI-GPIO, Arduino FRMATA, EC3000+Jeelink, LaCrosse+Jeelink, FS20+CUL
Loxone Miniserver (zum testen)

Offline StefanStrobel

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1044
Antw:HTTPMOD Anwendungsbeispiele
« Antwort #4 am: 01 Mai 2017, 10:32:48 »
Hallo,

für mein NAS ist noch 4.2.5 aktuell. 4.3. hab ich noch nicht bekommen.
Mit 4.2.5 funktioniert alles noch.

Gruss
   Stefan

Offline okenny

  • Jr. Member
  • **
  • Beiträge: 74
Antw:HTTPMOD Anwendungsbeispiele
« Antwort #5 am: 01 Mai 2017, 10:34:00 »
ok, danke

ich habe schon 4.3.3 darauf  :o
mal sehen :)

FHEM auf NUC/Ubuntu;3XRPIs (MYSQL+FHEMtoFHEM für GPIO), HUE Lampen, Baumarkt Steckdosen Sender auf RPI-GPIO, Arduino FRMATA, EC3000+Jeelink, LaCrosse+Jeelink, FS20+CUL
Loxone Miniserver (zum testen)

Offline StefanStrobel

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1044
Antw:HTTPMOD Anwendungsbeispiele
« Antwort #6 am: 03 September 2017, 19:52:22 »
Hallo,

ich habe inzwischen auch das Update auf 4.3.3 im NAS eingespielt und die Surveillance-App aktualisiert.
Funktioniert unverändert.
Hast Du die Felder alle passend für Deine Kameras angepasst?

Gruss
   Stefan

Offline Rampler

  • Sr. Member
  • ****
  • Beiträge: 647
  • Experience is what causes you to make new mistakes
Antw:HTTPMOD Anwendungsbeispiele
« Antwort #7 am: 29 September 2017, 09:20:46 »
Hallo zusammen,
hier mal ein Bespiel für eine Fritzbox 7490 mit FW 6.86.
defmod Fritzbox HTTPMOD http://192.168.1.1/data.lua?xhr=1&sid=%sid%&lang=de&page=overview&xhrId=first&noMenuRef=1&no_sidrenew= 0
attr Fritzbox enableControlSet 1
attr Fritzbox enableCookies 1
attr Fritzbox get01ExtractAllJSON 0
attr Fritzbox get01Name Uebersicht
attr Fritzbox get01URL http://192.168.1.1/data.lua?xhr=1&sid=%sid%&lang=de&page=overview&xhrId=first&noMenuRef=1&no_sidrenew=
attr Fritzbox get02ExtractAllJSON 0
attr Fritzbox get02Name Netzwerkverbindungen
attr Fritzbox get02URL http://192.168.1.1/data.lua?xhr=1&sid=%sid%&lang=de&page=netDev&xhrId=cleanup&no_sidrenew=
attr Fritzbox httpVersion 1.1
attr Fritzbox reAuthRegex .*403.Forbidden.*
attr Fritzbox reading01OExpr my $var=$val.-Passwort;; $var =~ s/(.)/$1 . chr(0)/eg;; $var = lc(md5_hex($var));; "$val-$var"
attr Fritzbox reading01Regex challenge":"(........)
attr Fritzbox reading01Name token
attr Fritzbox reading02Name sid
attr Fritzbox reading03Name firmware
attr Fritzbox reading03JSON data_fritzos_nspver
attr Fritzbox reading04JSON data_ipv4_txt_3
attr Fritzbox reading04Name dsl_speed
attr Fritzbox reading02Regex sid=(................)
attr Fritzbox replacement01Mode reading
attr Fritzbox replacement01Regex %token%
attr Fritzbox replacement01Value token
attr Fritzbox replacement02Mode reading
attr Fritzbox replacement02Regex %sid%
attr Fritzbox replacement02Value sid
attr Fritzbox sid0Header1 Accept: text/html,application/xhtml+xml,application/xml;;q=0.9,*/*;;q=0.8 Accept-Language: de,en-US;;q=0.7,en;;q=0.3 Accept-Encoding: gzip, deflate
attr Fritzbox sid0Header2 Content-Type: application/x-www-form-urlencoded
attr Fritzbox sid0ParseResponse 1
attr Fritzbox sid0URL http://192.168.1.1/
attr Fritzbox sid1Data response=%token%&username=
attr Fritzbox sid1Header1 Accept: text/html,application/xhtml+xml,application/xml;;q=0.9,*/*;;q=0.8 Accept-Language: de,en-US;;q=0.7,en;;q=0.3 Accept-Encoding: gzip, deflate
attr Fritzbox sid1Header2 Content-Type: application/x-www-form-urlencoded
attr Fritzbox sid1IgnoreRedirects 1
attr Fritzbox sid1ParseResponse 1
attr Fritzbox sid1URL http://192.168.1.1/
attr Fritzbox timeout 4
attr Fritzbox verbose 2

Das besondere hier, ist das Chellange/Response verfahren...
Evtl kann es ja jemand brauchen

VG
Klaus
« Letzte Änderung: 29 September 2017, 10:20:52 von Rampler »
3 HMUART, 1 DUOFERN, 7 ESP8266, RPI (Wheezy), und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

Offline loungelizard

  • New Member
  • *
  • Beiträge: 18
Antw:HTTPMOD Anwendungsbeispiele
« Antwort #8 am: 10 Mai 2018, 12:58:53 »
Vielen Dank für den Impuls, ich habe ihn nutzen können, um meiner JUDO iSoft Plus Wasserenthärtungsanlage ein erstes Lebenszeichen zu entlocken. Die Authentifizierung ist mehrstufig:
1. Anfrage mit Username + Passwort --> Rückgemeldet wird ein Verbindungs-Token
2. Login mit Token + Seriennummer der Anlage --> Session ist gültig. Anschließend kann ich Abfragen senden.

Wenn ich eine Anfrage stelle und die Verbindung ist nicht gültig, erhalte ich ein "no token" zurück.
In den folgenden Strings sind Username, Password und serialnumber entsprechend zu ersetzen und die IP-Adresse der Anlage zu korrigieren. Ich stehe wie gesagt noch relativ am Anfang.
 
Attributes:
   authRetries 2
   extractAllJSON 1
   get01Name  SerialNumber
   get01URL   https://10.1.xx.xx:8124/?group=spare%20part&command=serial%20number&msgnumber=5&token=%token%
   get02Name  WaterCurrent
   get02URL   https://10.1.xx.xx:8124/?group=consumption&command=water%20current&msgnumber=1&token=%token%
   getHeader1 Content-Type: application/json
   getHeader2 Accept: */*
   reAuthRegex no token
   reading01Name token
   reading01Regex "token":"([^"]+)"
   replacement01Mode reading
   replacement01Regex %token%
   replacement01Value token
   showError  1
   sid01ParseResponse 1
   sid01URL   https://10.1.xx.xx:8124/?group=register&command=login&msgnumber=1&name=login&user=username&password=password&role=customer
   sid02URL   https://10.1.xx.xx:8124/?group=register&command=connect&msgnumber=6&token=%token%&parameter=i-soft%20plus&serial%20number=serialnumber
   timeout    5
   userattr   get01Name get01URL get02Name get02URL getData getHeader1 getHeader2 getURL reading01Name reading01Regex replacement01Mode:reading,internal,text,expression,key replacement01Regex replacement01Value sid01Data sid01ParseResponse:0,1 sid01URL sid02URL sidURL
   verbose    5
Anschließend kann ich mit get die ersten Werte auslesen.

Ich kämpfe allerdings noch mit der Zuordnung in Readings... Da die verschiedenen Requests JSON-Strings der folgenden Antwort zurück liefern,
{"command":"water current","data":"14 8","group":"consumption","msgnumber":"3","status":"ok","token":"6789ea8aa4f63d0fd00dc1a63c7f331e557854ea669f399b2743eb3aea93e1ad","wtuType":"i-soft plus","serial number":"ser","tftStarted":1525464465528}
wird immer das Reading "data" überschrieben. Den eigentlichen Reading-Namen müsste ich aus dem Ergebnis des "group"-Strings bilden. Im obigen Beispiel müsste ein Reading mit Namen "consumption" gebildet werden mit Wert "14 8".

Aber jetzt habe ich zumindest schon mal die Gewissheit, dass die Verbindung funktioniert. Hat vielleicht jemand eine spontane Idee, wie ich die Readings entsprechend automatisiert bilde?

Cheers, Florian
Raspberry Pi 3: CUL V3 (433 MHz a-culfw 1.21.00), Intertechno V1/V2; Z-Wave: ZME_UZB1, Fibaro Switches, Devolo Sensors, Aeotec Sensor; Xiaomi Mi; Lightify; MAXLAN: Heizkörper, Wandthermostat; Sonstiges: Fritzbox, Unfi, LG-TV, DENON AVR; TabletUI

Offline StefanStrobel

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1044
Antw:HTTPMOD Anwendungsbeispiele
« Antwort #9 am: 10 Mai 2018, 22:44:26 »
Hallo Florian,

Ich würde für Data und Group zwei Readings mit reading01JSON für Data und reading02JSON für Group definieren. Die werden dann der Reihe nach verarbeitet. In einer reading02OExpr für Group kannst Du dann die Perl-Funktion readingsBulkUpdate aufrufen und damit ein neues Reading mit dem Namen aus Group und dem Wert aus Data erzeugen.

Gruss
   Stefan

EDIT 11.5.18: falsch geschriebene Attribute korrigiert, damit die Verwirrung nicht zu groß wird :-)
« Letzte Änderung: 11 Mai 2018, 18:37:28 von StefanStrobel »
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline amenomade

  • Hero Member
  • *****
  • Beiträge: 2728
Antw:HTTPMOD Anwendungsbeispiele
« Antwort #10 am: 11 Mai 2018, 01:21:38 »
mit readin01-JSON und reading02-JSON

Wenn der Maintainer des Moduls selbst nicht mehr weiß, wie seine Readings heißen  :P ;)
FHEM 5.8 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, und HM Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten

Offline loungelizard

  • New Member
  • *
  • Beiträge: 18
Antw:HTTPMOD Anwendungsbeispiele
« Antwort #11 am: 11 Mai 2018, 07:33:29 »
Zitat
einer reading02-Expr für Group kannst Du dann die Perl-Funktion readingsBulkUpdate aufrufen und damit ein neues Reading mit dem Namen aus Group und dem Wert aus Data erzeugen.

Super - das hat mir schon mal deutlich weiter geholfen... Mich beschleicht aber das Gefühl, dass meine Lösung nicht sehr elegant ist :) Komme ich unmittelbarer auf den Wert aus dem reading01, anstatt über ReadingVal das Device regulär abzufragen?

reading01JSON   data
reading02JSON   group
reading02OExpr  readingsBulkUpdate($hash,$val,ReadingsVal("JUDO_iSoft","data",""))


Cheers, Florian
Raspberry Pi 3: CUL V3 (433 MHz a-culfw 1.21.00), Intertechno V1/V2; Z-Wave: ZME_UZB1, Fibaro Switches, Devolo Sensors, Aeotec Sensor; Xiaomi Mi; Lightify; MAXLAN: Heizkörper, Wandthermostat; Sonstiges: Fritzbox, Unfi, LG-TV, DENON AVR; TabletUI

Offline StefanStrobel

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1044
Antw:HTTPMOD Anwendungsbeispiele
« Antwort #12 am: 11 Mai 2018, 18:01:35 »
Hallo,

ReadingsVal ist schon richtig.
Ein alternative Lösung wäre es einfach je get ein separates Reading mit eigenem Namen und immer dem gleichen JSON zu definieren:

attr JUDO_iSoft get01URL passendeURL...
attr JUDO_iSoft get01Name Consumption
attr JUDO_iSoft get01JSON data
attr JUDO_iSoft get02URL anderePassendeURL...
attr JUDO_iSoft get02Name Temperatur
attr JUDO_iSoft get02JSON data

Gruss
   Stefan

Offline loungelizard

  • New Member
  • *
  • Beiträge: 18
Antw:HTTPMOD Anwendungsbeispiele
« Antwort #13 am: 11 Mai 2018, 20:19:39 »
Super, danke für den Support. Dann lasse ich das mit reading02OExpr stehen. Da die Gruppierungen mehrdeutig waren und ich dann durch die commands  Leerzeichen in den Readingsnamen hatte, habe ich zwischenzeitlich noch mal optimiert, jetzt bin ich ganz zufrieden.
Danke noch mal.

attr JUDO_iSoft reading01JSON data
attr JUDO_iSoft reading01Name token
attr JUDO_iSoft reading01Regex "token":"([^"]+)"
attr JUDO_iSoft reading02JSON group
attr JUDO_iSoft reading03JSON command
attr JUDO_iSoft reading03OExpr $val =~ s/\s/-/;; $val; readingsBulkUpdate($hash,($val),ReadingsVal("JUDO_iSoft","data",""))


Cheers, Florian
Raspberry Pi 3: CUL V3 (433 MHz a-culfw 1.21.00), Intertechno V1/V2; Z-Wave: ZME_UZB1, Fibaro Switches, Devolo Sensors, Aeotec Sensor; Xiaomi Mi; Lightify; MAXLAN: Heizkörper, Wandthermostat; Sonstiges: Fritzbox, Unfi, LG-TV, DENON AVR; TabletUI

Offline SimonHipp

  • Jr. Member
  • **
  • Beiträge: 53
Antw:HTTPMOD Anwendungsbeispiele
« Antwort #14 am: 28 Mai 2018, 22:35:02 »
Hi Florian,

hast du schon einen Erfolg zwecks der Steuererung der Judo isoft-Plus erziehlen können?
Ich habe dein Wikieintrag umgesetzt, ist echt super, vielen Dank dafür.
Ich würde gerne nur um bedarfsfall den Auastop schliessen, geht sowas?

Grüße
Simon
FHEM 5.6(Dev) auf Intel NUC

Offline Wolle02

  • Full Member
  • ***
  • Beiträge: 192
Antw:HTTPMOD Anwendungsbeispiele
« Antwort #15 am: 09 Juni 2018, 08:24:07 »
Hallo,

ausgehend von diesem Beitrag (https://forum.fhem.de/index.php/topic,85941.0.html) lese ich von der Website www.Verkehrslage.de die aktuellen mobilen Blitzer für Stuttgart aus. 

Als reading01Name habe ich Strassenname angegeben.
Als reading01Regex habe ich Stuttgart, (.*), \(<a href angegeben.

Damit werden mir die Straßennamen korrekt ausgelesen.

Mein Problem ist nun die Modifizierung der RegEx, damit mir auch korrekt angezeigt wird, wenn einmal kein mobiler Blitzer in Stuttgart unterwegs ist. Auf der Website sieht der fragliche Quelltextteil dann folgendermaßen aus:
    <p class="error">Zur Zeit wurde(n) uns kein(e) mobile Blitzer in Stuttgart gemeldet.</p>
Ich habe nun die RegEx dahingehend modifiziert, dass ich eine ODER-Verknüpfung eingebaut habe. Dies sieht folgendermaßen aus:
reading01Regex            Stuttgart, (.*), \(<a href|<p class="error">(.*)<\/p>
Es wird mir damit auch der Text angezeigt, dass aktuell keine mobilen Blitzer da sind, allerdings wird dabei nicht das Reading "Strassenname" befüllt, sondern es werden zwei neue Readings "Strassenname-1" und "Strassenname-2" für diie beiden Alternativen erzeugt. Dies führt wieder zu Problemen bei der Weiterverarbeitung, da ich in der Folge nur das Reading "Strassenname" abfrage.

Kann mir jemand einen Tipp geben, wie ich die RegEx oder überhaupt die Abfrage gestalten muss, damit bei den Alternativen der ODER-Verknüpfung trotzdem das gleiche Reading befüllt wird?

Edit: Ich denke mit UserReadings müsste das irgendwie gehen. Leider verstehe ich das nicht ganz und es gibt diesbezüglich im Wiki auch keine Beispiele. Aber wahrscheinlich ist das hier dann auch der falsche Forenbereich dafür. Sorry.

Danke und Gruß
Wolle
« Letzte Änderung: 09 Juni 2018, 09:04:42 von Wolle02 »

Offline amenomade

  • Hero Member
  • *****
  • Beiträge: 2728
Antw:HTTPMOD Anwendungsbeispiele
« Antwort #16 am: 09 Juni 2018, 10:32:05 »
Mit userReadings kann man bestimmt was machen:
attr <httpmodName> <neuesReading>:Strassenname.* {perlcode um den Wert zu kalkulieren}
Aber wenn Du 2 oder 3 Blitzer in Stuttgart hast, wirst Du auch 2 Readings mit Strassenname-1 und Strassenname-2 haben, oder?

Zeig mal wie die Readings aussehen, und was Du in dem Fall haben möchtest.
FHEM 5.8 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, und HM Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten

Offline Wolle02

  • Full Member
  • ***
  • Beiträge: 192
Antw:HTTPMOD Anwendungsbeispiele
« Antwort #17 am: 09 Juni 2018, 10:56:55 »
Zitat
Aber wenn Du 2 oder 3 Blitzer in Stuttgart hast, wirst Du auch 2 Readings mit Strassenname-1 und Strassenname-2 haben, oder?

Gute Frage; bislang war in Stuttgart immer nur ein mobiler Blitzer unterwegs. Die Anschaffungskosten für mehrere Blitzer sind wahrscheinlich bei Stuttgart 21 verbuddelt worden  ;) ;D
Ich habe jetzt testweise mal auf Berlin umgestellt. Da sind aktuell drei mobile Blitzer unterwegs. Im Quelltext sieht das so aus:
<h1 class="widget-title"><span>mobile Blitzer in Berlin</span></h1>       
               
   
      Berlin, Kiefholzstraße, (<a href="javascript:zoom2Marker(2)">Karte</a>)<br>
   
      Berlin, Oranienstraße, (<a href="javascript:zoom2Marker(1)">Karte</a>)<br>
   
      Berlin, Provinzstraße, (<a href="javascript:zoom2Marker(0)">Karte</a>)<br>

Befüllt wird aber nur das Reading "Strassenname-1" und zwar nur mit dem ersten Blitzer in der Kiefholzstraße.

Wie müsste denn die RegEx modifiziert werden, damit die beiden anderen Blitzer auch noch erkannt werden?


Das Problem mit dem UserReading habe ich nach einigen Mühen jetzt erstmal hinbekommen; glaube ich  ::) Das Problem war der {perlcode um den Wert zu kalkulieren}.
Folgendes habe ich jetzt als Userreading:
attr mobile_Blitzer userReadings Strassenname {if ((ReadingsTimestamp("mobile_Blitzer","Strassenname-1",0)) gt (ReadingsTimestamp("mobile_Blitzer","Strassenname-2",0))) {(ReadingsVal("mobile_Blitzer","Strassenname-1",""))} else {(ReadingsVal("mobile_Blitzer","Strassenname-2",""))}}
Damit zeigt er mir jetzt den aktuellen Blitzer aus dem Reading "Strassenname-1" an. Mal schauen wie das aussieht wenn die Feierabend gemacht haben.

Gruß
Wolle

Offline amenomade

  • Hero Member
  • *****
  • Beiträge: 2728
Antw:HTTPMOD Anwendungsbeispiele
« Antwort #18 am: 09 Juni 2018, 12:22:56 »
Befüllt wird aber nur das Reading "Strassenname-1" und zwar nur mit dem ersten Blitzer in der Kiefholzstraße.
Das verstehe ich nicht. Kannst Du bitte ein "list" vom httpmod zeigen?
FHEM 5.8 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, und HM Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten

Offline Wolle02

  • Full Member
  • ***
  • Beiträge: 192
Antw:HTTPMOD Anwendungsbeispiele
« Antwort #19 am: 09 Juni 2018, 13:04:31 »
Ah, ich hab jetzt noch ein userattr reading01RegOpt mit dem Wert 'g' gesetzt; und jetzt findet er auch die beiden anderen Blitzer und trägt sie in die Readings "Strassenname-2" und "Strassenname-3" ein.
Ich tu mich hier etwas schwer, weil es die CommandRef und das Wiki nur auf Englisch gibt. Daraus resultieren einige Verständnisprobleme. Schade.

Jetzt muss ich mal rumprobieren, wie ich diese Einzel-Readings mit dem UserReading wieder eingefangen kriege, so dass mir als Endergebnis nur ein Reading mit einer Liste der vorhandenen Blitzer oder halt die Mitteilung, dass keine Blitzer da sind angezeigt wird.

Offline loungelizard

  • New Member
  • *
  • Beiträge: 18
Antw:HTTPMOD Anwendungsbeispiele
« Antwort #20 am: 24 Juni 2018, 06:54:07 »
Ich würde gerne nur um bedarfsfall den Auastop schliessen, geht sowas?
Hi Simon,

ich bin aktuell etwas stark eingebunden und komme nicht dazu, es weiter zu implementieren.
Aber im Prinzip ist es leicht erweiterbar: Status abfragen ist folgender Command:
https://xx.xx.xx.xx:8124/?group=waterstop&command=valve&msgnumber=1&token=deinToken

Und als Set-Befehle
Aquastop öffnen:
https://xx.xx.xx.xx:8124/?group=waterstop&command=valve&msgnumber=1&token=deinToken&parameter=open
AquaStop schließen:
https://xx.xx.xx.xx:8124/?group=waterstop&command=valve&msgnumber=1&token=deinToken&parameter=close

Quick & Dirty geht es so:
 attr JUDO_iSoft set01Name CloseValve
 attr JUDO_iSoft set01URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=valve&msgnumber=1&token=%token%&parameter=close
 
 attr JUDO_iSoft set02Name OpenValve
 attr JUDO_iSoft set02URL https://%JUDO_ipaddress%:8124/?group=waterstop&command=valve&msgnumber=1&token=%token%&parameter=open

Dann den Set-Befehl noch mit einem Wert starten set JUDO_iSoft CloseValve 1

Kannst ja mal den Wikieintrag updaten, wenn Du es hübscher umgesetzt hast.
Cheers, Florian


Raspberry Pi 3: CUL V3 (433 MHz a-culfw 1.21.00), Intertechno V1/V2; Z-Wave: ZME_UZB1, Fibaro Switches, Devolo Sensors, Aeotec Sensor; Xiaomi Mi; Lightify; MAXLAN: Heizkörper, Wandthermostat; Sonstiges: Fritzbox, Unfi, LG-TV, DENON AVR; TabletUI

Offline loungelizard

  • New Member
  • *
  • Beiträge: 18
Antw:HTTPMOD Anwendungsbeispiele
« Antwort #21 am: 06 Oktober 2018, 00:26:53 »
So, ich hatte jetzt mal etwas Zeit und habe meine Steuerung der Judo auf Vordermann gebracht. Ich kann jetzt aus TabletUI Aquastop schließen und öffnen (bekomme bei geschlossenem Aquastop zyklisch Nachrichten über Telegram) sowie den Härtegrad setzen.
Auch lese ich mittlerweile die Wasserverbrauchswerte zuverlässig aus.
Ich habe es gleich im entsprechenden Wiki-Eintrag dokumentiert.
Have fun,

Cheers, Florian
Raspberry Pi 3: CUL V3 (433 MHz a-culfw 1.21.00), Intertechno V1/V2; Z-Wave: ZME_UZB1, Fibaro Switches, Devolo Sensors, Aeotec Sensor; Xiaomi Mi; Lightify; MAXLAN: Heizkörper, Wandthermostat; Sonstiges: Fritzbox, Unfi, LG-TV, DENON AVR; TabletUI