Neue Version von HTTPMOD mit neuen Features zum Testen

Begonnen von StefanStrobel, 05 Dezember 2015, 08:31:32

Vorheriges Thema - Nächstes Thema

StefanStrobel

Zitat von: uwirt am 30 März 2021, 16:47:28
Wie fügt man denn das Reading der URL an?
attr mydevice get01URL https://www.webseite.com/location?iso=$iso-1

Dafür gibt es Replacements: https://wiki.fhem.de/wiki/HTTPMOD#Further_replacements_of_URL.2C_header_or_post_data

Gruss
   Stefan

Vize

Hallo zusammen,

bin gerade dabei, die von Damian vorgestellte Möglichkeit der Abfrage einer Wunderground Wetterstation umzusetzen.

Vorweg muss ich sagen, dass ich eine sehr alte Version von HTTPMOD nutze...  :-[

Bei Abfrage der Wetterseite wird dabei das internal buf mit sehr viel Text gefüllt.
Gibt es eine Möglichkeit, den Text im internal buf - oder auch den buf komplett - auszublenden?

Bräuchte ich nur aus Gründen der Übersichtlichkeit.  ;)

Danke schonmal für jegliche Hilfe und Tipps!

VG
Andreas

mi.ke

FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

Vize

Hallo mi.ke,

danke für den Tipp, aber das funktioniert leider nicht...

VG
Andreas

mi.ke

wenn das Internal "buf" heißt hilft nur update
FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

Vize


Benni

#1071
Hallo Stefan,

ich bin gerade dabei, meinen neuen Whirlpool mit HTTPMOD in FHEM einzubinden.

Ich habe soweit auch schon alles drin und ich bekomme per get die benötigten Status-Infos und kann per set-Commands auch schon alles schalten, was man da schalten kann.
Die Status-Informationen polle ich aktuell in einem Interval von 5 Minuten. So weit so gut!

Allerdings ist es bei dieser API so, dass bei einem set-Command keine Antwort kommt, genauer gesagt, kommt im Erfolgsfall einfach eine leere JSON-Antwort zurück. Um nun die Schaltaktion auch zeitnah in den Readings sichtbar zu machen, müsste ich also direkt nach einem set-Command einen get für die Status-Informationen ausführen.

Leider habe ich dazu noch keine Möglichkeit gefunden.

Das HTTPMOD-Device erzeugt beim set anscheinend zwar einen Event, der enthält aber keine Information darüber, dass der Event durch einen Set ausgelöst wurde und unterscheidet sich damit leider nicht von einer Änderung des gleichnamigen Readings.

Gibt es da etwas, was ich bisher übersehen habe?

Danke dir!

gb#

Wolle02

Zitat von: Benni am 24 April 2021, 22:20:02
Allerdings ist es bei dieser API so, dass bei einem set-Command keine Antwort kommt, genauer gesagt, kommt im Erfolgsfall einfach eine leere JSON-Antwort zurück. Um nun die Schaltaktion auch zeitnah in den Readings sichtbar zu machen, müsste ich also direkt nach einem set-Command einen get für die Status-Informationen ausführen.

Leider habe ich dazu noch keine Möglichkeit gefunden.

Schau mal, ob dieses Attribut eventuell das ist was du suchst:

(get|set)[0-9]*FollowGet
allows to chain a get command after another set or get command.
If for example you want to set a new required temerature with a set 'TargetTemp' command and this set command changes the temperature with a series of HTTP requests in your heating system, then you can automaticaly do a get 'TargetTemp' to read out the new value from your heating.
The value of this attribute must match a defined get command name.


Leider bin ich kein Nativ English Speaker, so dass ich das auch falsch verstanden haben kann. Ist leider immer schwierig reine englische Dokus zu lesen.

Benni

Zitat von: Wolle02 am 25 April 2021, 10:53:51
Schau mal, ob dieses Attribut eventuell das ist was du suchst:

(get|set)[0-9]*FollowGet
allows to chain a get command after another set or get command.
If for example you want to set a new required temerature with a set 'TargetTemp' command and this set command changes the temperature with a series of HTTP requests in your heating system, then you can automaticaly do a get 'TargetTemp' to read out the new value from your heating.
The value of this attribute must match a defined get command name.


Hallo Wolle02,

super! Genau das habe ich gesucht!

Zu meiner Schande muss ich gestehen, dass ich davon ausgegangen bin, der recht umfangreiche Wiki-Artikel zum HTTPMOD-Device wäreaktuell. Aber der kennt dieses Attribut leider (noch) nicht!

Auf die Idee in der CommandRef zu suchen bin ausgerechnet ich, der Leute gern mit RTFM weiterschickt diesmal nicht gekommen.  ;D

Ich hab's getestet und es funktioniert genau so, wie erwartet!

Schönen Sonntag noch!

gb#

JueFi

Hallo Stefan,

ich habe nach langer Zeit mal wieder ein FHEM Update gemacht und bekomme jetzt folgenden Fehler

2021.06.03 22:58:21 1: reload: Error:Modul 98_HTTPMOD deactivated:
Can't locate JSON.pm in @INC (@INC contains: ./lib ./FHEM . /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl ./FHEM/lib) at lib/FHEM/HTTPMOD/Utils.pm line 671, <$fh> line 170.
BEGIN failed--compilation aborted at lib/FHEM/HTTPMOD/Utils.pm line 671, <$fh> line 170.
Compilation failed in require at ./FHEM/98_HTTPMOD.pm line 67, <$fh> line 170.
BEGIN failed--compilation aborted at ./FHEM/98_HTTPMOD.pm line 67, <$fh> line 170.

2021.06.03 22:58:21 0: Can't locate JSON.pm in @INC (@INC contains: ./lib ./FHEM . /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl ./FHEM/lib) at lib/FHEM/HTTPMOD/Utils.pm line 671, <$fh> line 170.
BEGIN failed--compilation aborted at lib/FHEM/HTTPMOD/Utils.pm line 671, <$fh> line 170.
Compilation failed in require at ./FHEM/98_HTTPMOD.pm line 67, <$fh> line 170.
BEGIN failed--compilation aborted at ./FHEM/98_HTTPMOD.pm line 67, <$fh> line 170.

Ich war auf Version 98_HTTPMOD.pm 20841 2019-12-28 12:19:51Z StefanStrobel
und bin auf Version 98_HTTPMOD.pm 24185 2021-04-08 10:59:25Z StefanStrobel gegangen

Vielen Dank schon mal vorab für deine Mühe.

ch.eick

Zitat von: JueFi am 03 Juni 2021, 23:09:03
Hallo Stefan,

ich habe nach langer Zeit mal wieder ein FHEM Update gemacht und bekomme jetzt folgenden Fehler

2021.06.03 22:58:21 1: reload: Error:Modul 98_HTTPMOD deactivated:
Can't locate JSON.pm in @INC (@INC contains: ./lib ./FHEM . /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl ./FHEM/lib) at lib/FHEM/HTTPMOD/Utils.pm line 671, <$fh> line 170.
BEGIN failed--compilation aborted at lib/FHEM/HTTPMOD/Utils.pm line 671, <$fh> line 170.
Compilation failed in require at ./FHEM/98_HTTPMOD.pm line 67, <$fh> line 170.
BEGIN failed--compilation aborted at ./FHEM/98_HTTPMOD.pm line 67, <$fh> line 170.

2021.06.03 22:58:21 0: Can't locate JSON.pm in @INC (@INC contains: ./lib ./FHEM . /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl ./FHEM/lib) at lib/FHEM/HTTPMOD/Utils.pm line 671, <$fh> line 170.
BEGIN failed--compilation aborted at lib/FHEM/HTTPMOD/Utils.pm line 671, <$fh> line 170.
Compilation failed in require at ./FHEM/98_HTTPMOD.pm line 67, <$fh> line 170.
BEGIN failed--compilation aborted at ./FHEM/98_HTTPMOD.pm line 67, <$fh> line 170.

Ich war auf Version 98_HTTPMOD.pm 20841 2019-12-28 12:19:51Z StefanStrobel
und bin auf Version 98_HTTPMOD.pm 24185 2021-04-08 10:59:25Z StefanStrobel gegangen
Hi,
das waren ja zwei Jahre kein Update :-) das nenn' ich mal stabil.

In der Zeit gab es massive Umbauten, ich meine auch etwas mit einem eigenen Adressbereich, aber da bin ich nicht wirklich gut informiert.

Ich würde zuerst mal das json.pm nachinstallieren.

Gruß
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

JueFi

Hallo Christian,

vielen Dank für deinen Vorschlag.

Das hat Fehler ausgeworfen:
- sudo apt-get install libjson-perl

Und bei der Suche kommt man dann an verschiedenen Stellen vorbei, die dann sowas
- sudo apt-get update && sudo apt-get upgrade
empfehlen.

Wie auch immerm ich habe das System zerlegt - woran du natürlich keine Schuld hast, das habe ich schon selber verbockt.
Naja, war eh noch ein uraltes System (wheezy) und vielleicht ein Zeichen, das mal neu zu machen.

Viele Grüße

Jürgen

ch.eick

Zitat von: JueFi am 04 Juni 2021, 14:22:54
Und bei der Suche kommt man dann an verschiedenen Stellen vorbei, die dann sowas
- sudo apt-get update && sudo apt-get upgrade
empfehlen.
Okay, das ist von Zeit zu Zeit schon zu Empfehlen und macht einen generellen Upgrade.

Zitat
Das hat Fehler ausgeworfen:
- sudo apt-get install libjson-perl
Danach sollte das aber auch laufen.
Schade, dass es nicht geklappt hat.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

StefanStrobel

Hallo,

Das JSON-Modul sollte nur geladen werden, wenn auch in der HTTPMOD-Konfiguration JSON vorkommt. Eigentlich sollte dann aber beim Fehlen des Moduls eine sinnvolle Meldung kommen. Der Crash ist ein Bug, der beim letzten größeren Umbau reinkam. Der wird in der nächsten Version behoben.

Gruss
    Stefan

tobi01001

Hi Stefan,

keine Ahnung ob ein Bug oder nicht. Zumindest führt es bei mir zu Problemen mit den Attributen.
Und zwar meine ich, dass durch das Erstellen mittels join und das Anhängen der readingFnAttributes die Attribute regexCompile und event-aggregator zu  regexCompileevent-aggregator werden (und damit unbrauchbar). Zumindest war das bei mir eben so. Ein Leerzeichen hinter regexCompile bzw. generell dem letzten Eintrag hat das für mich korrigiert.

my $AttrList = join (' ',
      '(reading|get|set)[0-9]+(-[0-9]+)?Name',
      '(reading|get|set)[0-9]*(-[0-9]+)?Expr:textField-long',
      '(reading|get|set)[0-9]*(-[0-9]+)?Map',
...
'bodyDecode',
      'regexCompile ') .
      $main::readingFnAttributes; 

... in dem Ausschnitt ist das Leerzeichen bereits drin. Keine Ahnung ob das der korrekte Weg ist.

Jedenfalls war ich auf der Suche nach einem Memory Leak (keine Ahnung ob ein Zusammenhang besteht) und dabei ist mir das in den Attributen aufgefallen.

Vll. kann das ja mal wer verifizieren....

Gruß,
Tobias
FHEM@UbuntuServer on Lenovo ThinkCentre M900 [i5-6500T / 8GB RAM] MySQL-DbLog, Grafana, FTUI3 / HmIP incl. CCU3 / LGESS / Wärempumpe über TA CMI und CANoE / Shellies u.v.m.