FHEM Forum

FHEM - Hausautomations-Systeme => ZWave => Thema gestartet von: MrAustria am 05 Januar 2017, 09:28:33

Titel: Z-Weather: Daten per http weitergeben
Beitrag von: MrAustria am 05 Januar 2017, 09:28:33
Hallo!

Ich erweitere mein Loxone-System mit einem Raspberry mit FHEM und Z-Wave. Meine Wetterstation Z-Weather ist erfolgreich mit FHEM verbunden.

Anbei findet ihr einen Screenshot aus FHEM. Wie (mit welchen Pearl-Befehlen) kann ich nun alle Messwerte von Z-Weather per http an Loxone schicken??

Ich wäre für eure Hilfe extrem dankbar, da ich leider ein totaler Pearl/FHEM-Anfänger bin.

Besten Dank,
MrA
Titel: Antw:Z-Weather: Daten per http weitergeben
Beitrag von: rudolfkoenig am 05 Januar 2017, 10:07:30
1. Pearl ist mW ein Versandhandel, du meinst vmtl. die von FHEM verwendete Programmiersprache perl.
2. Fuer eine sinnvolle Antwort muesstest du einen Loxone Experten finden oder bei Loxone fragen. Irgendwas in der Art von
define zw_ntfy notify zweather {\
  my $bm = ReadingsVal($NAME, "barometricPressure",0);;\
  my $dp = ReadingsVal($NAME, "dewpoint",0);;\
  GetFileFromURL("http://myloxone/interface?bm=$bm&dp=$dp");;\
}
Titel: Antw:Z-Weather: Daten per http weitergeben
Beitrag von: MrAustria am 05 Januar 2017, 16:42:33
Vielen Dank Rudolf! Ich weiß mittlerweile, wie die Daten in Loxone ankommen müssen und habe nun folgendes gebastelt. Passt das aus PERL-Sicht?:


define nzweather notify Wetterstation_Terrasse:temperature:.* {\\
  my $temperature = ReadingsVal($NAME, "temperature",0);;;;\\
  wget -q -O - 'http://user:passwort@ipadresse/dev/sps/io/VI2/$temperature';;;;\\
}


Ich erlaube mir noch eine Zusatzfrage: Z-Weather aktualisiert seine Daten (z.B. die Temperatur) nur alle paar Stunden. Daher möchte ich Datum+Uhrzeit der letzten Aktualisierung der Temperatur mitschicken. Wie könnte ich denn das hinbekommen?

Liebe Grüße,
MrA
Titel: Antw:Z-Weather: Daten per http weitergeben
Beitrag von: rudolfkoenig am 05 Januar 2017, 19:30:31
1. Passt nicht: man muss in perl Shell-Befehle/Programme mit system("programmname") oder `programmname` ausfuehren. Und du hast doppelt so viele ; und \ wie gesund. Falls du das define mit dem DEF Knopf in der FHEMWEB Detailansicht aenderst, dann brauchst du  kein \ und einmal ; reicht auch.
;; und \ ist nur beim direktes Editieren der fhem.cfg notwendig.

2. Um die Zeitstempel abzufragen verwendet man ReadingsTimestamp, siehe auch https://fhem.de/commandref.html#perl fuer Details.
Titel: Antw:Z-Weather: Daten per http weitergeben
Beitrag von: MrAustria am 05 Januar 2017, 22:06:19
Danke Rudolf. Ich kämpfe aber noch. So steht es jetzt in meiner fhem.cfg, funktioniert aber noch nicht. Stimmt da noch was mit den " nicht?!


define nzweather notify Wetterstation_Terrasse:temperature:.* {\
  my $temperature = ReadingsVal($NAME, "temperature",0);;\
  "wget -q -O - 'http://user:passwort@ipadresse/dev/sps/io/VI2/$temperature'";;\
}
Titel: Antw:Z-Weather: Daten per http weitergeben
Beitrag von: rudolfkoenig am 05 Januar 2017, 22:10:42
Ja. Ich habe ` (backtick) geschrieben, und nicht ".
"programname" ist nur ein String.
Titel: Antw:Z-Weather: Daten per http weitergeben
Beitrag von: MrAustria am 06 Januar 2017, 10:48:21
Jetzt mit "backtick" kommt keine Fehlermeldung mehr. Die Daten kommen leider trotzdem noch nicht in Loxone an. Aber ich kämpfe weiter ... !


define ntfy_Wetterstation_Terrasse_Temperatur notify Wetterstation_Terrasse:temperature:.* {\
  my $temperature = ReadingsVal($NAME, "temperature",0);;\
  my $temptime = ReadingsTimestamp($NAME, "temperature",0);;\
  `wget -q -O - 'http://user:passwort@ipadresse/dev/sps/io/VI2/$temperature'`;;\
  `wget -q -O - 'http://user:passwort@ipadresse/dev/sps/io/VI3/$temptime'`;;\
}


Ich habe gerade erst begriffen, dass mir hier DER Rudolf König hilft. Daher an dieser Stelle ein großes RESPECT und DANKE an dich! ;)
Titel: Antw:Z-Weather: Daten per http weitergeben
Beitrag von: rudolfkoenig am 06 Januar 2017, 11:06:42
Vielleicht laesst du -q weg, und schaust ins FHEM Log.

P.S: Kniefall fehlt noch :)
Titel: Antw:Z-Weather: Daten per http weitergeben
Beitrag von: MrAustria am 06 Januar 2017, 12:42:30
Der Kniefall steht kurz bevor!  8)

Aus mir unerfindlichen Gründen hat die User-Authentifizierung so nicht funktioniert:

`wget -q -O - 'http://user:passwort@ipadresse/dev/sps/io/VI2/$temperature'`;;\

Nach langem Probieren funktioniert es jetzt aber so:

`wget --user=user --password=passwort 'http://ipadresse/dev/sps/io/VI2/$temperature'`;;\

Mache ich mir hier eigentlich ein Sicherheitsrisiko auf, weil ich ständig meinen User und mein Passwort per wget verschicke?
Titel: Antw:Z-Weather: Daten per http weitergeben
Beitrag von: rudolfkoenig am 06 Januar 2017, 13:07:51
Kann loxone auch https? Damit waere die Uebertragung gesichert. Wenn "Fremde" auf dem FHEM-Rechner unterwegs sind, dann sollte man ueber .wgetrc nachdenken. Ich versuche keine Fremde in meinem Netz reinzulassen, und lasse "intern" (fast) alles offen.

Leider kann man nie alle Sicherheitsloecher zumachen, nur die Bekannten. :)
Titel: Antw:Z-Weather: Daten per http weitergeben
Beitrag von: MrAustria am 06 Januar 2017, 14:47:02
Danke für die Antwort. - Ich habe jetzt noch ein Problem, das ich bislang nicht lösen konnte. Das sollte aber doch ganz einfach sein?!:

Mit ReadingsTimestamp bekomme ich die Zeit im Format YYYY-MM-TT HH:MM:SS.

In Loxone benötige ich aber TT.MM.YYYY HH:MM:SS.

Nun möchte ich also das ReadingsTimestamp-Ergebnis vor dem Abschicken an Loxone umformatieren. Nur wie?  :-\
Titel: Antw:Z-Weather: Daten per http weitergeben
Beitrag von: rudolfkoenig am 06 Januar 2017, 15:07:59
Ueben:
$ perl -e '"YYYY-MM-TT HH:MM:SS" =~ m/(....)-(..)-(..) (.*)/; print "$3.$2.$1 $4"'

Einbauen:
ReadingsTimestamp($NAME, "temperature",0) =~ m/(....)-(..)-(..) (.*)/;;\
my $temptime = "$3.$2.$1 $4";;\

Titel: Antw:Z-Weather: Daten per http weitergeben
Beitrag von: MrAustria am 06 Januar 2017, 16:12:06
Kniefall! Herzlichen Dank!