Shell Aufruf in FHEM starten und als Reading speichern

Begonnen von choetzu, 24 September 2018, 14:47:39

Vorheriges Thema - Nächstes Thema

Wzut

Nein da fehlt keine Klammer , at ist da nur etwas zickig beim neu anlegen :)
Im ersten Schritt nur
define at_rt at +*00:01:00 { }
dann links oben DEF anklicken und das leere Klammerpaar mit Raspitemp("Test");  füllen oder unten via RAW definition
defmod at_rt at +*00:01:00 { } -> defmod at_rt at +*00:01:00 { Raspitemp("Test"); }
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Vaddi

Alternativ könnte man ein Script und CustomReadings nehmen.
Hier mal meine Daten:

monitor.sh in /opt/fhem/
und Rechte anpassen
#/bin/bash
service pilight status |grep 'running'|wc -l # Läuft PiLight?
cat /sys/class/thermal/thermal_zone0/temp |awk '{WERT=$1/1000;printf ( "%.2f",WERT )}' # CPU Temp
exit 0


Dann in FHEM
defmod SYSMON2 CustomReadings
attr SYSMON2 group System
attr SYSMON2 interval 30
attr SYSMON2 readingDefinitions COMBINED:qx(/opt/fhem/monitor.sh),PiLight:,Temperatur:
attr SYSMON2 room System


Wird alle 30 Sekunden aktualisiert, ist beliebig erweiterbar und es werden schön die Readings
erzeugt.
fhem auf RPi 3
HM-MOD-RPI-PCB sowie 433mhz Sender
Mehrere HM und 433mhz Produkte

Wzut

@Vaddi :
Das Bessere ist der Feind des Guten :)  Ich kannte CustomReadings noch gar nicht, schick !
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

choetzu

Zitat von: Vaddi am 26 September 2018, 22:27:28
ist beliebig erweiterbar und es werden schön die Readings
erzeugt.

Hallo
herzlichen Dank. Gefällt mir.
Was meinst du mit erweiterbar? Könnte man auch die freien RAM loggen? Ich will ja nicht SYSMON ersetzen, aber die freien RAM und die CPU Temp sind mir irgendwie wichtig.
Lg c
Raspi3, EnOcean, Zwave, Homematic

Beta-User

Interessanter Ansatz mit CustomReadings.

In der Commandref ist bei den qx-Anfragen immer ein "&1" dahinter. So ist der Aufruf blockierend, oder ist das eine Fehlinterpretation? (Dürfte hier ziemlich egal sein, da die Antworten hoffentlich sehr schnell kommen).

Ansonsten kann man aus dem script (nicht FHEM-blockierend) auch die Werte mit telnet an FHEM übergeben, wie bereits hier verlinkt.
Zitat von: choetzu am 24 September 2018, 20:01:42
diese Variante ist vermutlich noch etwas komplizierter, oder?
Ist also nur ein kleines bißchen komplizierter, denn der Aufruf muß dann noch eingetaktet werden (at oder cronjob)...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Wzut

Zitat von: choetzu am 28 September 2018, 13:04:12
Was meinst du mit erweiterbar? Könnte man auch die freien RAM loggen?
Na er hat doch in seinem Beispiel schon zwei Werte drin ( plight status und sys Temp)
Wenn du fünf Werte haben willst schreibst halt fünf Zeilen ins shell Script und kopierst die nachher  mittels readingDefinitions in fünf verschiedene Readings
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Vaddi

Für Speicher folgendes in die monitor.sh einfügen

cat /proc/meminfo |grep -e "MemF" |awk '{WERT=$2/1000;printf ( "%.0fMB\n", WERT )}'
Und im Device readingDefinitions anpassen
attr SYSMON2 readingDefinitions COMBINED:qx(/opt/fhem/monitor.sh),PiLight:,Temperatur:,MemFree:

Wichtig bei cat Befehlen ist bei dem printf ein \n, ansonsten würde kein neues Reading erstellt
und der freie Speicher wird dem vorherigen Befehl angefügt.
fhem auf RPi 3
HM-MOD-RPI-PCB sowie 433mhz Sender
Mehrere HM und 433mhz Produkte

twenta

Nur weil ich mich gerade hier inspirieren lasse. Die Shebang Zeile müsste ein Ausrufezeichen beinhalten (weiß nicht ob das Probleme machen kann):
#!/bin/bash