Geofancy zusätzliche Readings

Begonnen von logol01, 28 Dezember 2018, 22:55:59

Vorheriges Thema - Nächstes Thema

logol01

Hallo zusammen,

ich habe folgendes auf meinem FHEM Pi eingerichtet:
https://www.meintechblog.de/tag/geofency/

Die Readings übergebe ich bis dato mit UDP zu meinem Loxone Miniserver.
Hier mein "99_myUtils.pm" Auszug

#AnwesenheitToLoxone
sub ResidentToLoxone ($)
{
my ($device) = @_;
my $state = ReadingsVal("$device","state","-1");
if ($state eq "absent") {
$state = "0";
}
if ($state eq "home") {
$state = "1";
}
my $arrival=time_str2num(ReadingsVal("$device","lastArrival","-1"));
my $departure=time_str2num(ReadingsVal("$device","lastDeparture","-1"));
my $wayhome=ReadingsVal("$device","wayhome","-1");

UDP_Msg("192.168.178.245" , "7200" , "$device: $state $arrival $departure $wayhome");
}

Nun möchte ich das aber per http zum Loxone Miniserver übergeben (mit MQTT)

Das Dumme ist, dass die Readings aber im falschen Datum und Zeitformat sind.
In der UDP Variante rechne ich das Datum und Zeit Reading in Sekunden um.
Das bräuchte ich aber schon im Standard Reading (oder irgendwie ein zusätzliches Reading), dass mein Loxone Miniserver das versteht.....

Wie kann ich das bewerkstelligen?

Freue mich auf Eure Hilfe

VG

Logol01

herrmannj

wie genau soll die Nachricht aussehen ? (Beispiel)

logol01

Anbei habe ich die Beispiele angehängt.

Bild Geo1 ist das Reading in FHEM
Bild Geo 2 sind die Werte die der Loxone Miniserver erwartet.

z.B. aus 2018-12-29 19:28:37 muss der Wert werden --> 1546108117.0

Wie oben erwähnt ist bei der Übergabe über UDP in der 99_myUtils.pm Datei die Umrechnung hinterlegt.

Bei MQTT kann ich aber nichts umrechnen - da bräuchte ich die Werte gleich richtig in meinen Readings..... - also sprich zusätzliche Readings.......

herrmannj

Du legst dafür userreadings an (und die Formeln aus 99_myUtils.pm verwenden).

logol01

Hmmmm, ok!
Und wie müssten die aussehen?
Hab mal danach gegoogelt, aber ich glaube das ist zu kompliziert für mich.

Über eine Erklärung was ich dazu eingeben sollte wäre ich echt froh!

herrmannj

ist da nicht die cmdref die Bibel ? ;)

https://fhem.de/commandref_DE.html
ZitatuserReadings
Komma getrennte Liste von benutzerdefinierten Readings. Jede Definition hat folgendes Format:
<reading>[:<trigger>] [<modifier>] { <perl code> }
also ein attribut anlegen, zuerst das einen Namen dann einen trigger (vmtl device:lastDeparture.*), beim perlcode kommt dann das rein:
{time_str2num(ReadingsVal("$device","lastDeparture","-1"))}


logol01

ist das so richtig?

userReadings      lastDepature2:lastDeparture.* {time_str2num(ReadingsVal("$device","lastDeparture","-1"))}

siehe Bild?

müsste da dann ein zusätzliches Reading generieren, wenn der Wert lastDeparture sich ändert mit dem Namen "lastDepature2"

das tut es aber leider nicht - was mache ich falsch?

logol01

Ich komm da leider nicht weiter.....