Neue Version von HTTPMOD mit neuen Features zum Testen

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

Vorheriges Thema - Nächstes Thema

andies

Das weiß ich nicht so genau, richtig geklappt hat das nie. Ich habe nun blöderweise alles geändert, hier mal das aktuelle Listing:
Internals:
   BUSY       0
   CHANGED   
   DEF        none 0
   FUUID      5cb8c86e-f33f-1115-01ab-f15bc7b80c7d9a1c
   Interval   0
   LASTSEND   1567051920.03168
   MainURL   
   ModuleVersion 3.5.9 - 13.2.2019
   NAME       Pikrellcam
   NOTIFYDEV  global
   NR         219
   NTFY_ORDER 50-Pikrellcam
   ReplacementEnabled 1
   STATE      <a href="http://rasp.fritz.box/">Link</a>
   TRIGGERTIME 0
   TRIGGERTIME_FMT
   TYPE       HTTPMOD
   addr       http://rasp.fritz.box:80
   auth       0
   code       200
   compress   1
   conn       
   data       
   displayurl http://rasp.fritz.box/fifo_command.php?cmd=still
   header     
   host       rasp.fritz.box
   httpheader HTTP/1.1 200 OK
Server: nginx/1.10.3
Date: Thu, 29 Aug 2019 04:12:00 GMT
Content-Type: text/html; charset=UTF-8
Connection: close
   httpversion 1.0
   hu_blocking 0
   hu_filecount 6
   hu_port    80
   hu_portSfx
   ignoreredirects 0
   loglevel   4
   path       /fifo_command.php?cmd=still
   protocol   http
   redirects  0
   timeout    2
   url        http://rasp.fritz.box/fifo_command.php?cmd=still
   value      0
   QUEUE:
   READINGS:
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       set06
     url        http://rasp.fritz.box/fifo_command.php?cmd=still
     value      0
   sslargs:
Attributes:
   comment    Dieses HTTPMOD-Modul erlaubt die Steuerung von Pikrellcam über http-Befehle. Die enstprechende URL *muss* in jeden Set-Befehl eingetragen werden, im define muss "none" als URL stehen. Derzeit implementiert
1.) set <device> motion on/off
2.) set <device> archive_day YYYY-MM-DD (nur für einzeln einzugebende Tage)
3.) set <device> delete_day YYYY-MM-DD (nur für einzeln einzugebende Tage)
4.) set <device> archive_yesterday (Videos von gestern archiviert)
5.) set <device> delete_last_month
   group      intern
   replacement01Mode reading
   replacement01Regex %%yesterday%%
   replacement01Value yesterday
   replacement02Mode reading
   replacement02Regex %%year%%
   replacement02Value year
   replacement03Mode reading
   replacement03Regex %%last_month%%
   replacement03Value last_month
   room       Kameras
   set01Name  motion
   set01TextArg 1
   set01URL   http://rasp.fritz.box/fifo_command.php?cmd=motion_enable%20$val
   set02Name  archive_day
   set02TextArg 1
   set02URL   http://rasp.fritz.box/media-archive.php?mode=media&type=videos&dir=media&archive_date=$val
   set03Name  delete_day
   set03TextArg 1
   set03URL   http://rasp.fritz.box/media-archive.php?mode=media&type=videos&dir=media&delete_day=$val
   set04Name  archive_yesterday
   set04NoArg 1
   set04URL   http://rasp.fritz.box/media-archive.php?mode=media&type=videos&dir=media&archive_date=%%yesterday%%
   set05Name  delete_last_month
   set05NoArg 1
   set05URL   http://rasp.fritz.box/media-archive.php?mode=archive&type=videos&year=%%year%%&m0=%%last_month%%&d0=1&m1=%%last_month%%&d1=31&delete_all
   set06Name  still
   set06NoArg 1
   set06URL   http://rasp.fritz.box/fifo_command.php?cmd=still
   stateFormat <a href="http://rasp.fritz.box/">Link</a>
   userReadings yesterday, year, last_month
   userattr   replacement01Mode:reading,internal,text,expression,key replacement01Regex replacement01Value replacement02Mode:reading,internal,text,expression,key replacement02Regex replacement02Value replacement03Mode:reading,internal,text,expression,key replacement03Regex replacement03Value set01Name set01TextArg:0,1 set01URL set02Name set02TextArg:0,1 set02URL set03Name set03TextArg:0,1 set03URL set04Name set04NoArg:0,1 set04Replacement01Value set04URL set05Name set05NoArg:0,1 set05URL set06Name set06NoArg:0,1 set06URL
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

amenomade

Zitat von: andies am 29 August 2019, 09:52:43
Das weiß ich nicht so genau, richtig geklappt hat das nie. Ich habe nun blöderweise alles geändert, hier mal das aktuelle Listing:


Naja, eine Log hat nur in Verbindung mit dem entspr. "list" Sinn, und umgekehrt.
Jetzt hast Du replacementMode Reading. Dafür musst Du die entspr. Readings haben, was nicht der Fall ist. Dein userReadings Eintrag bringt nichts, da die keine Werte bekommen.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

andies

Die readings befülle ich mit einem at-Kommando, das wiederum aus myUtils.pm eine Funktion holt. Das, was ich jetzt habe, funktioniert ja - ist eben nur kein Perl-expression in dem device.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

Weiss jemand, ob man set-Kommandos in httpmod definieren kann, die zwei Variablen enthalten? Ich benötige so etwas wie

set Kamera archive videos <Datum>

wobei Kamera das httpmod-Device ist, archive dann auf eine URL umleiten wird und diese URL aber zwei Parameter, nämlich das Wort videos und einen Datumstring benötigen wird.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

amenomade

Was ist die 2. Variable ausser <Datum> und wie sieht dann die gesamte set Request (URL + Headers + Data) aus?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

andies

Danke schon mal für die Hilfe. Ich benötige zwei set-Befehle der Form
set <device> archive_day videos 2019-09-06
sowie
set <device> archive_day stills 2019-09-06

Die URL sieht dann so aus:

http://rasp.fritz.box/media-archive.php?mode=media&type=stills/videos&dir=media&archive_date=$val

und eben stills oder videos sowie das Datum als $val.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

amenomade

Also.... das einfachste wäre 2 unterschiedliche set Kommandos, ein archive_day_videos für videos, ein achive_day_stills für stills.

Ansonsten könnte man vielleicht mit set01Replacement01Value und set01Replacement02Value und set01ReplacementNNMode expression ein $val in der Form "videos 2019-09-06" mit substr so parsen, dass das erste Teil an eine Stelle kommt, und das Datum an die andere Stelle. Das habe ich aber noch nie probiert.

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

andies

Variante 1 habe ich im Einsatz, allerdings gibt es vier verschiedene Kommandos und damit benötige ich 8 sets, und das war mir zu viel. Variante 2 überlege ich mir mal, danke!
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

uwirt

Ich suche nach einer Möglichkeit einen curl Befehl mit HTTPMOD umzusetzen.

Der Befehl lautet:

curl -H "X-User-id:XXX" -H "X-User-hash:YYY" -s https://data.at.com/api/v1/devices/NNN/all/60


Kann mir jemand hier Starthilfe leisten?

Besten Dank
FHEM / Ubuntu / fitlet2
HomeMatic: CCU3|HmIP-STHD|HmIP-PCBS|HmIP-PCBS2|HmIP-PCBS-BAT|HM-WDC7000|HM-WDS100-C6-O|HM-WDS40|HM-LC-Sw1-FM|HM-LC-RGBW-WM|HM-ES-PMSw1-Pl|HM-ES-TX-WM
NAS: DS218+|DS209j|DS216+II|DS412+
Devices: Panasonic Webcams|Withings|Gardena Smart|Tuya

amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

andies

zwischen Tür und Angel

defmod DeinName HTTPMOD https://data.at.com/api/v1/devices/NNN/all/60 0

und dann
Zitat
If your device expects special HTTP-headers then specify them as
attr (DeinName) requestHeader1
to
attr (DeinName)  requestHeaderX
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

uwirt

Ich habe es hingekriegt ... besten dank!


defmod uRadMonitorAC3 HTTPMOD https://data.at.com/api/v1/devices/NNN/all/120 60
attr uRadMonitorAC3 userattr getData getHeader getHeader1 getHeader2 reading100JSON reading100Name reading101JSON reading101Name reading102JSON reading102Name reading103JSON reading103Name reading104JSON reading104Name reading105JSON reading105Name reading106JSON reading106Name reading107JSON reading107Name reading108JSON reading108Name reading109JSON reading109Name reading110JSON reading110Name reading111JSON reading111Name reading112JSON reading112Name reading113JSON reading113Name reading114JSON reading114Name reading115JSON reading115Name reading116JSON reading116Name reading117JSON reading117Name reading118JSON reading118Name requestHeader1 requestHeader2
attr uRadMonitorAC3 extractAllJSONFilter 01_*
attr uRadMonitorAC3 reading100JSON 01_time
attr uRadMonitorAC3 reading100Name 01_time
attr uRadMonitorAC3 reading101JSON 01_latitude
attr uRadMonitorAC3 reading101Name 01_latitude
attr uRadMonitorAC3 reading102JSON 01_longitude
attr uRadMonitorAC3 reading102Name 01_longitude
attr uRadMonitorAC3 reading103JSON 01_timelocal
attr uRadMonitorAC3 reading103Name 01_timelocal
attr uRadMonitorAC3 reading104JSON 01_humidity
attr uRadMonitorAC3 reading104Name 01_humidity
attr uRadMonitorAC3 reading105JSON 01_temperature
attr uRadMonitorAC3 reading105Name 01_temperature
attr uRadMonitorAC3 reading106JSON 01_vocaqi
attr uRadMonitorAC3 reading106Name 01_vocaqi
attr uRadMonitorAC3 reading107JSON 01_voc
attr uRadMonitorAC3 reading107Name 01_voc
attr uRadMonitorAC3 reading108JSON 01_duty
attr uRadMonitorAC3 reading108Name 01_duty
attr uRadMonitorAC3 reading109JSON 01_pm10
attr uRadMonitorAC3 reading109Name 01_pm10
attr uRadMonitorAC3 reading110JSON 01_pm25
attr uRadMonitorAC3 reading110Name 01_pm25
attr uRadMonitorAC3 reading111JSON 01_voltage
attr uRadMonitorAC3 reading111Name 01_voltage
attr uRadMonitorAC3 reading112JSON 01_altitude
attr uRadMonitorAC3 reading112Name 01_altitude
attr uRadMonitorAC3 reading113JSON 01_noise
attr uRadMonitorAC3 reading113Name 01_noise
attr uRadMonitorAC3 reading114JSON 01_pressure
attr uRadMonitorAC3 reading114Name 01_pressure
attr uRadMonitorAC3 reading115JSON 01_ch2o
attr uRadMonitorAC3 reading115Name 01_ch2o
attr uRadMonitorAC3 reading116JSON 01_cpm
attr uRadMonitorAC3 reading116Name 01_cpm
attr uRadMonitorAC3 reading117JSON 01_pm1
attr uRadMonitorAC3 reading117Name 01_pm1
attr uRadMonitorAC3 reading118JSON 01_co2
attr uRadMonitorAC3 reading118Name 01_co2
attr uRadMonitorAC3 requestHeader1 X-User-id:XXX
attr uRadMonitorAC3 requestHeader2 X-User-hash:YYY
attr uRadMonitorAC3 stateFormat https://data.at.com
FHEM / Ubuntu / fitlet2
HomeMatic: CCU3|HmIP-STHD|HmIP-PCBS|HmIP-PCBS2|HmIP-PCBS-BAT|HM-WDC7000|HM-WDS100-C6-O|HM-WDS40|HM-LC-Sw1-FM|HM-LC-RGBW-WM|HM-ES-PMSw1-Pl|HM-ES-TX-WM
NAS: DS218+|DS209j|DS216+II|DS412+
Devices: Panasonic Webcams|Withings|Gardena Smart|Tuya

Hardlife

@StefanStrobel:
Ich hätte ein Anliegen zu Deinem tollen HTTPMOD-Modul.
Ich setze es für unterschiedliche Dinge ein und bin für das Modul sehr dankbar.
Die Möglichkeiten damit sind ja schier unendlich - Danke für die tolle Arbeit.


Seit ca. Jänner 2019 beobachte ich aber leider ein komisches Verhalten, bei dem ich Dich um Unterstützung bitten wollte.
Vielleicht kennst Du den Thread: https://forum.fhem.de/index.php/topic,84372.0.html
Ich bin leider auch ein Betroffener des darin beschriebenen Fehlers...  :(


Bei mir ist die Ursache wohl in deinem Modul (und meiner extrem umfangreichen Nutzung davon) zu finden.
Ich habe ein recht umfangreiches TV-Programm mit HTTPMOD umgesetzt (einige hundert RegEx waren dazu notwendig).
Inspiriert und weiterentwickelt nach Beispielen aus dem Thread: https://forum.fhem.de/index.php/topic,28123.0.html
Könntest Du mich hier bitte bei der Fehlersuche Unterstützen? Meine Kenntnisse sind da leider recht rudimentär...


Fehlerbild:
Nach ca. 19 Stunden erhalte ich den obig beschriebenen Fehler und mein FHEM startet (automatisiert) neu.
Der User "HomeAuto_User" bestätigt mir das Verhalten https://forum.fhem.de/index.php/topic,84372.msg981998.html#msg981998 https://forum.fhem.de/index.php/topic,84372.msg971930.html#msg971930


Kurze Zusammenfassung: https://forum.fhem.de/index.php/topic,84372.msg981483.html#msg981483
Zugehörigen Code für fhem.cfg habe ich angehängt.
Abschnitt für 99_myutils.pm siehe unten:
#####################################
### Zeilenumbruch für TV-Programm ###
#####################################

sub
wrapLine($$)
{
  my ($string, $maxLength) = @_;
  $string = decode_entities($string);
my @stringParts = split(/ /, $string);
  my $actRowLength = 0;
  my $resultString = '';
  while (scalar(@stringParts) > 0) {
  my $tempString = shift @stringParts;
    if ($actRowLength > 0)
    {
    if (($actRowLength + length($tempString)) > $maxLength)
      {
      $actRowLength = 0;
        $resultString .= '<br>';
      }
    }
    $resultString .= $tempString;
    $actRowLength += length($tempString);
    if (scalar(@stringParts) > 0)
    {
    $resultString .= ' ';
    $actRowLength += 1;
    }
  }
  if ($resultString eq '')
  {
  return ' ';
  }
  else
  {
  return $resultString;
  }
}

#### ENDE ### Zeilenumbruch #############



Wäre echt toll, wenn man den Fehler finden/beheben könnte.


LG,
Hardlife
Raspi 4B
nanoCUL-868 & 433,JeeLink,milight,Signalduino,GPIO-433er-Sender/Empfänger, GPIO-Infrarot,GSM-Stick für SMS
MAX!-Heizungssteuerung,Intertechno-V1-Steckdosen + V3-Dimmer,"Flamingo FA21RF"-Funk-Rauchmelder
433er-China-Bewegungsmelder,"Voltcraft CO20"-Stick,LaCrosse-Temperatur,Revolt-NC5462

scp

Hi ich wollte eine Varibale von einem Reading meines Sensors  in einen HTTPMOD POST Request einbauen . Momentan kann ich zum Beispiel über
Zitatdata
mein ein paar Parameter erfolgreich senden :D
   ( meine Post nachrichten sehe ich auf https://ptsv2.com  ::))
param1=888888&param2=2222&param3=WMBUS_SON_23275669_22_8:1_value&param4={ReadingsVal("WMBUS_SON_23275669_22_8","1_value","2");;}&param6={ReadingsVal("MeineVariablev1","state","2");;}&param7=$MeineVariablev1&param999=$replacement01Value&param99999={return 1;;}&out999=0ue&out112=$MeineVariablev1&param90=$MeineVariable1

Nun möchte ich wie gesagt einfach eine Variable übermitteln.
Habe wie man schon sieht einige Kombinationen ausprobiert.. aber es wird nur der Variablenname gesendet.

Bin auch schon auf das Replacement gestoßen. Aber er wenn ich
Zitatparamx = %%value%%
eingebe wird auch nichts übermittelt.
Jetzt habe ich dazu auch noch etwas anderes gesehen:

Zitatattr PM set01Name HeizungSoll
attr PM set01URL http://mypoolmanager/cgi-bin/webgui.fcgi?sid=$sid
attr PM set01Hint 6,10,20,30
attr PM set01Min 6
attr PM set01Max 30
attr PM setHeader1 Content-Type: application/json
attr PM set01Data {"set" :{"34.3118.value" :"$val" }}

aber auch dort habe ich es nicht geschaft den wert meiner Variablen zu platzieren.

:o
Momentan muss ich deswegen noch die Werte mit Hilfe von curl über eine Perl-Skript schicken...

Kann evtl. jemand noch einen Hinweis geben^^ Vielen Dank :D

amenomade

Replacement ist richtig, aber ohne deine Versuche kann man nicht sehen, was Du probiert hast und ggf. korrigieren
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus