solved: notify system Aufruf mit Parameterübergabe

Begonnen von matze.h, 14 Januar 2017, 14:50:42

Vorheriges Thema - Nächstes Thema

matze.h

Hallo FHEM-Gemeinde,

da erster Post hier möchte ich mir zu allererst bei allen die aktiv an FHEM und dessen Komponenten mitgearbeitet haben herzlich bedanken! Ich nutze das System nun mehr seit über 7 Jahren zur Haus-Steuerung und Speicherung von Daten wie Temperaturen, Stromverbrauch, etc.

Da ich nach längerer Zeit den Heim-Server neu aufsetzen muss, habe ich mir ein frisches 16.04 Ubuntu auf einem Pine64 aufgesetzt. FHEM 5.7 mit HMLAN und CUL läuft darauf wunderbar. Allerdings funktioniert meine auf fhem 5.6 verwendeten notify zur Übergabe von Daten an ein Python-Skript nicht mehr in der neuen Version.

Bisher hatte ich immer folgende notify verwendet:

define HobbyDB notify Hobby:T.* "/usr/local/bin/fhemtodb.rb @ "%""


was mir dann folgende Systemaufrufe generiert hatte

/usr/local/bin/fhemtodb.rb Hobby T: 21.3  H: 55.5

die dann in eine DB geschrieben und über ein Ruby-Projekt visualisiert wurden.

Jetzt scheinen es nur noch Systemaufruf der Natur zu sein:

/usr/local/bin/fhemtodb.rb @ %

Auch eine Umstellung auf verschiedene Varianten mit {system("")} hatten keinen Erfolg erzielt.

define HobbyDB notify Hobby:T.* {system("/usr/local/bin/fhemtodb.rb @ &")}

Ziel ist es einen Systemcall der Form

/usr/local/fhemtodb.rb {Devicename} {Werte}

zu haben.

Habe ich etwas entscheidendes übersehen? Fhem-Plugin?

Vielen Dank für Eure Mühen!

Matze

stromer-12

Das mit @ und % hat sich vor einiger Zeit geändert. Du musst jetzt $NAME und $EVENT verwenden.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

rudolfkoenig

Alternativ "attr global featurelevel 5.6" setzen.
Das hat natuerlich andere Konsequenzen.

matze.h

Vielen Dank für Eure schnelle Antwort.

So sieht es jetzt aus.

define HobbyDB notify Hobby:T.* {system("/usr/local/bin/fhemtodb.rb $NAME '$EVENT' &")}

Habe auch versucht es in der Doku oder Wiki zu finden, leider selbst jetzt mit dem Wissen der beiden Variablen bin ich nicht fündig geworden. Evtl. kann noch jemand den/die relevanten Stellen hier verlinken, dann ist der Thread perfekt.

Vielen Dank!

rudolfkoenig

ZitatHabe auch versucht es in der Doku oder Wiki zu finden, leider selbst jetzt mit dem Wissen der beiden Variablen bin ich nicht fündig geworden.

Das wundert mich, und wuerde gerne wissen wo du gesucht hast. In https://fhem.de/commandref.html#notify steht doch:
Zitat

       
  • in the command section you can access the event:

            
    • The variable $EVENT will contain the complete event, e.g. measured-temp: 21.7 (Celsius)
    • $EVTPART0,$EVTPART1,$EVTPART2,etc contain the space separated event parts (e.g. $EVTPART0="measured-temp:", $EVTPART1="21.7", $EVTPART2="(Celsius)". This data is available as a local variable in perl, as environment variable for shell scripts, and will be textually replaced for FHEM commands.
    • $NAME and $TYPE contain the name and type of the device triggering the event, e.g. myFht and FHT
  • Note: the following is deprecated and will be removed in a future release. It is only active for featurelevel up to 5.6. The described replacement is attempted if none of the above variables ($NAME/$EVENT/etc) found in the command.

            
    • The character % will be replaced with the received event, e.g. with on or off or measured-temp: 21.7 (Celsius)
      It is advisable to put the % into double quotes, else the shell may get a syntax error.
    • The character @ will be replaced with the device name.
...
Diesen Text kriegt man auch, wenn man in FHEMWEB, notify DetailAnsicht auf Device-Help klickt.

matze.h

hmmm... jertzt sehe ich es auf den ersten Blick. Hatte vermutlich nur unter Befehle und nicht unter Hilfs-Module geschaut gehabt ...