Autor Thema: HTTPMOD Anwendungsbeispiele  (Gelesen 8107 mal)

Offline Wolle02

  • Full Member
  • ***
  • Beiträge: 378
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

  • Developer
  • Hero Member
  • ****
  • Beiträge: 6568
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.9 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Offline Wolle02

  • Full Member
  • ***
  • Beiträge: 378
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

  • Developer
  • Hero Member
  • ****
  • Beiträge: 6568
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.9 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Offline Wolle02

  • Full Member
  • ***
  • Beiträge: 378
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: 19
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: 19
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

Offline dquantz

  • New Member
  • *
  • Beiträge: 7
Antw:HTTPMOD Anwendungsbeispiele
« Antwort #22 am: 18 Juni 2019, 22:07:43 »
Hat schon jemand geschafft den Sleepmodus per Request zu aktivieren oder zu deaktivieren. Ich habe es mit https://192.168.178.xxx:8124/?group=waterstop&command=standby&msgnumber=1&token=TOKEN&parameter=1 versucht, an der Judo Entkalkungsanlage passiert aber nichts.

 

Offline amenomade

  • Developer
  • Hero Member
  • ****
  • Beiträge: 6568
Antw:HTTPMOD Anwendungsbeispiele
« Antwort #23 am: 18 Juni 2019, 22:18:00 »
Was kommt als Antwort in der Log?
FHEM 5.9 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Offline SimonHipp

  • Jr. Member
  • **
  • Beiträge: 77
Antw:HTTPMOD Anwendungsbeispiele
« Antwort #24 am: 02 Januar 2020, 20:05:52 »
Hi,

ich mal wieder, irgendwie bekomme ich die folgenden Zeilen nicht zum laufen:
attr JUDO_iSoft saltRangeInWeeks { int( (ReadingsVal("JUDO_iSoft","salt-range",0)/7))} , saltQuantityInPercent { int( (ReadingsVal("JUDO_iSoft","salt-quantity",0)/50000)*100)}Es wird immer gemeldet "JUDO_iSoft: unknown attribute saltRangeInWeeks. Type 'attr JUDO_iSoft ?' for a detailed list." habe auch schon versucht die attr als "userattr" hinzuzufügen, leider auch ohne Erfolg.
Was mache ich falsch? sonst ist die Steuerung echt super, danke!

Grüße
Simon
FHEM 5.6(Dev) auf Intel NUC mit VDSL 100/40Mbit/s

Offline SimonHipp

  • Jr. Member
  • **
  • Beiträge: 77
Antw:HTTPMOD Anwendungsbeispiele
« Antwort #25 am: 03 Januar 2020, 13:38:05 »
Kannst du mal deine Config zeigen, irgendwie fehlt mir im wiki auf das Erstellen der "Readings auslesen" Funktion.
Ich steh hier aktuell echt auf dem Schlauch, sorry.
FHEM 5.6(Dev) auf Intel NUC mit VDSL 100/40Mbit/s

Offline amenomade

  • Developer
  • Hero Member
  • ****
  • Beiträge: 6568
Antw:HTTPMOD Anwendungsbeispiele
« Antwort #26 am: 05 Januar 2020, 19:14:32 »
attr JUDO_iSoft saltRangeInWeeksWillst Du ein userReading definieren? Dann fehlt das Wort "userReadings" zwischen JUDO_iSoft und saltRangeInWeeks
Wills Du ein userAttribut definieren? Dann fehlt attr global userattr saltRangeInWeeks (vorsicht, das bestehende Attribut userattr auf global nicht blind überschreiben). Erst dann kannst Du auf dem Httpmod dieses Attribut setzen.
FHEM 5.9 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Offline DM

  • New Member
  • *
  • Beiträge: 3
Antw:HTTPMOD Anwendungsbeispiele
« Antwort #27 am: 18 Januar 2020, 16:47:50 »
Hallo Florian,

bei mir hängt die i-soft plus über den Weinzierl 773 am KNX. Letztlich sind dann die Reading im FHEM die gleichen. Für die Statistik nutze ich den wasserCalculator. Daraus ergeben sich dann die üblichen Verbrauchsdiagramme - täglich, monatlich, jährlich + Kosten.
Die Erfassung des Verbrauch erfolgt minütlich über Stundenstatistik der i-soft, da der total counter nur stündlich aktualisiert wird. So kann man Durchfluss und Verbrauch über die Zeit (Tag) darstellen.

Grüße,
Dirk

Offline ch.eick

  • Sr. Member
  • ****
  • Beiträge: 976
Antw:HTTPMOD Anwendungsbeispiele
« Antwort #28 am: 07 Juni 2020, 16:46:56 »
Hallo zusammen,
ich habe nun auch meine JUDO iSoft Plus angebunden und moechte mal fragen, ob jemand schon etwas ansprechendere Readings formatiert hat?
Bei den Abfragen und der Umwandlung mit JSON entstehen ja eine Menge unnuetzer Readings, die dazu auch noch mehrfach verwendet werden.
Ich stelle mir da eine Formatierung inklusive der "group" vor, damit das ganze etwas uebersichtlicher wird.

Nach dem Motto, nicht nur fragen, sondern auch mal machen habe ich mal die Datumsangaben als userreadings umformatiert...
saltRangeInWeeks     { int( (ReadingsVal("$NAME","salt-range",0)/7))} ,
saltQuantityInPercent { int( (ReadingsVal("$NAME","salt-quantity",0)/50000)*100)},

water-date:day.* { sprintf("%4d.%02d.%02d",ReadingsVal("$NAME","year",0),ReadingsVal("$NAME","month",0),ReadingsVal("$NAME","day",0) ) },

init-date-clear:init-date.*               { POSIX::strftime("%Y-%m-%d %H:%M",localtime(ReadingsVal("$NAME","init-date",0))) },
service-date-clear:service-date.* { POSIX::strftime("%Y-%m-%d %H:%M",localtime(ReadingsVal("$NAME","service-date",0))) }

EDIT:
Ich habe schon mal begonnen die readings zu definieren, zu formatieren und als Gruppen zusammen zu fassen.
Mit der JSON Funktion ging das nicht so richtig, weshalb ich nun einzelne Regex verwende. Ein weiterer Vorteil, den ich sehe ist, dass bei einer get Anfrage nun auch gezielt die Readings entstehen.
Please stay tuned... die restlichen readings kommen noch und dann natuerlich auch die Definition.
READINGS:
     2020-06-07 18:09:10   contract_Init-Date 2020-05-19 08:28
     2020-06-07 18:09:26   contract_Service-Date 2020-05-19 08:14

     2020-06-07 18:09:19   spare_part_Serial-Number 12345

     2020-06-07 18:09:06   version_Hardware-Version 5.10
     2020-06-07 18:09:32   version_Software-Version 02.09.h

     2020-06-07 18:09:43   waterstop_State opened

Gruss
   Christian
« Letzte Änderung: 07 Juni 2020, 18:17:22 von ch.eick »
RPI4; Docker; CUNX; Eltako FSB61NP; 230V zentral verschaltet; SamsungTV H-Serie; DLNARenderer; TV.pl;  Sonos; Vallox; Luxtronik; 2x FB7490; Stromzähler mit DvLIR; wunderground; clever-tanken; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP

Offline ch.eick

  • Sr. Member
  • ****
  • Beiträge: 976
Antw:HTTPMOD Anwendungsbeispiele
« Antwort #29 am: 07 Juni 2020, 20:05:14 »
EDIT:
Ich bin mit dem JUDO isoft Plus nach hier https://forum.fhem.de/index.php/topic,112147.0.html umgezogen


So, die bisherigen readings waeren dann durch...
Ein feedback von den iSoft Nutzern waere dann sehr gewuenscht.
READINGS:
     2020-06-07 18:50:22   consumption_SaltQuantityInPercent 47
     2020-06-07 18:50:28   consumption_SaltRangeInWeeks 24
     2020-06-07 19:46:40   consumption_WaterCurrentRaw 28
     2020-06-07 19:46:40   consumption_WaterCurrentSoft 3
     2020-06-07 20:00:40   consumption_WaterDailyDate 2020-06-07
     2020-06-07 20:00:40   consumption_WaterDailyThreeHour-1 8
     2020-06-07 20:00:40   consumption_WaterDailyThreeHour-2 0
     2020-06-07 20:00:40   consumption_WaterDailyThreeHour-3 12
     2020-06-07 20:00:40   consumption_WaterDailyThreeHour-4 26
     2020-06-07 20:00:40   consumption_WaterDailyThreeHour-5 34
     2020-06-07 20:00:40   consumption_WaterDailyThreeHour-6 20
     2020-06-07 20:00:40   consumption_WaterDailyThreeHour-7 43
     2020-06-07 20:00:40   consumption_WaterDailyThreeHour-8 -1
     2020-06-07 19:46:46   consumption_WaterTotalRaw 502
     2020-06-07 19:46:46   consumption_WaterTotalSoft 4
     2020-06-07 18:49:41   contract_InitDate 2020-05-19 08:28
     2020-06-07 18:50:39   contract_ServiceDate 2020-05-19 08:14
     2020-06-07 18:49:46   info_NaturalHardness 20
     2020-06-07 18:50:17   settings_ResidualHardness 6
     2020-06-07 18:50:33   spare_part_SerialNumber 96586
     2020-06-07 18:49:36   version_HardwareVersion 5.10
     2020-06-07 18:50:43   version_SoftwareVersion 02.09.h
     2020-06-07 18:47:22   waterstop_FlowRate 0
     2020-06-07 18:50:12   waterstop_Quantity 500
     2020-06-07 19:59:52   waterstop_State opened
     2020-06-07 18:51:20   waterstop_Vacation 0

Beim iSoft Plus gibt es wohl noch einige Werte mehr, an die mache ich mich dann mal die naechsten Tage.
« Letzte Änderung: 15 Juni 2020, 19:52:54 von ch.eick »
RPI4; Docker; CUNX; Eltako FSB61NP; 230V zentral verschaltet; SamsungTV H-Serie; DLNARenderer; TV.pl;  Sonos; Vallox; Luxtronik; 2x FB7490; Stromzähler mit DvLIR; wunderground; clever-tanken; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP