Z-Weather: Daten per http weitergeben

Begonnen von MrAustria, 05 Januar 2017, 09:28:33

Vorheriges Thema - Nächstes Thema

MrAustria

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

rudolfkoenig

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");;\
}

MrAustria

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

rudolfkoenig

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.

MrAustria

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'";;\
}

rudolfkoenig

Ja. Ich habe ` (backtick) geschrieben, und nicht ".
"programname" ist nur ein String.

MrAustria

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! ;)

rudolfkoenig

Vielleicht laesst du -q weg, und schaust ins FHEM Log.

P.S: Kniefall fehlt noch :)

MrAustria

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?

rudolfkoenig

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. :)

MrAustria

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?  :-\

rudolfkoenig

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";;\


MrAustria