98_CustomReadings.pm

Begonnen von P.A.Trick, 31 August 2014, 16:30:11

Vorheriges Thema - Nächstes Thema

P.A.Trick

@HCS: Wenn du planst das Modul offiziell einzuchecken dann habe ich noch einen Hinweis für dich!

Use of uninitialized value $value in substitution (s///) at ./FHEM/98_CustomReadings.pm line 54.

Vielen Dank im Voraus!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

HCS

#1
Dies ist der Diskussions-Thread für das Modul 98_CustomReadings.

Er enthält die Entstehungsgeschichte und die aktuelle Diskussion über das Modul.

Die Dokumentation zum aktuellen Stand (die sollte man zuerst anschauen, bevor man diesen Thread durcharbeitet) findet man hier:

wiki: http://www.fhemwiki.de/wiki/CustomReadings
commandref: http://fhem.de/commandref.html#CustomReadings
Ankündigung: http://forum.fhem.de/index.php/topic,26810.0.html

P.A.Trick

Ja bei genialen einfachen Modulen bleibe ich penetrant :-) Bitte bitte einchecken ;-)

Ich habe ein Skript dahinter welches einen Sync-Job auf meinem NAS beobachtet!

Internals:
   CHANGED
   NAME       cr_trinity_rsync
   NR         1057
   STATE      no
   TYPE       CustomReadings
   Readings:
     2014-09-02 21:46:38   rsyncRunning    no
Attributes:
   event-on-change-reading .*
   interval   120
   readingDefinitions rsyncRunning:qx(/opt/fhem/check_sync_server.sh 2>&1)
   room       _CustomReadings
   stateFormat rsyncRunning


Hier noch das Skript:

#!/bin/bash

RESULT=$(ps -ef | grep anon|grep rsync|wc -l)
if [ "$RESULT" -gt 0 ];then
RUNNING=yes
else
RUNNING=no
fi
echo $RUNNING

Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

HCS

Dein Script ist auch in der Lage nichts (also weder yes noch no) zu liefern. Ich vermute mal, dass es dann passiert.
Ich versuche es nachzustellen und schaue danach.

Bin mir aber auch nicht ganz sicher, welche Version Du hast.
Ich hänge meine aktuelle Version mal hier an.

Könntest mir zwei Gefallen tun:
Schau mal, ob der Fehler mit dieser Version weg ist
Schau Dir mal den commandref-Teil an, ob man damit versteht, wie es funktioniert.


Hier die commandref (haut mit der Formatierung hier nicht ganz hin, in echt ist es hübscher, siehe cr.jpg):

CustomReadings

    FHEM module to define own readings.

    This module allows to define own readings. The readings can be defined in an attribute so that they can get changed without changing the code of the module.
    To use this module you should have some perl and linux knowledge
    The examples presuppose that you run FHEM on a linux machine like a Raspberry Pi or a Cubietruck.
    Note: the "bullshit" definition is an example to show what happens if you define bullshit :-)

    Example (definition in fhem.cfg)
    define myReadings CustomReadings
    attr myReadings room 0-Test
    attr myReadings interval 2
    attr myReadings readingDefinitions hdd_temperature:qx(hddtemp /dev/sda 2>&1) \
    ac_powersupply_voltage:qx(cat /sys/class/power_supply/ac/voltage_now 2>&1) / 1000000 \
    ac_powersupply_current:qx(cat /sys/class/power_supply/ac/current_now 2>&1) / 1000000 \
    perl_version:$] \
    timezone:qx(cat /etc/timezone 2>&1) \
    kernel:qx(uname -r 2>&1) \
    device_name:$hash->{NAME} \
    bullshit: $hash->{bullshit} \
    fhem_backup_folder_size:qx(du -ch /opt/fhem/backup | grep total | cut -d 't' -f1 2>&1)

    Resulting readings:
    ac_powersupply_current 0.236 2014-08-09 15:40:21
    ac_powersupply_voltage 5.028 2014-08-09 15:40:21
    bullshit ERROR 2014-08-09 15:40:21
    device_name myReadings 2014-08-09 15:40:21
    fhem_backup_folder_size 20M 2014-08-09 15:40:21
    hdd_temperature /dev/sda: TS128GSSD320: 47°C 2014-08-09 15:40:21
    kernel 3.4.103-sun7i+ 2014-08-09 15:40:21
    perl_version 5.014002 2014-08-09 15:40:21
    timezone Europe/Berlin 2014-08-09 15:40:21

    Define
    define <name> CustomReadings

    Readings
    As defined

    Attributes
        interval
        Refresh interval in seconds

        readingDefinitions
        Each line represents a definition for a reading. A definition consists of two parts, separated by a colon.
        All lines (except the last one) must end with a backslash
        The first part is the name of the reading and the second part the function.
        The function gets evaluated and must return a result.

        Example: kernel:qx(uname -r 2>&1)
        Defines a reading with the name "kernel" and evaluates the linux function uname -r

P.A.Trick

Zitat von: HCS am 02 September 2014, 22:19:29
Dein Script ist auch in der Lage nichts (also weder yes noch no) zu liefern. Ich vermute mal, dass es dann passiert.
Ich versuche es nachzustellen und schaue danach.

Bin mir aber auch nicht ganz sicher, welche Version Du hast.
Ich hänge meine aktuelle Version mal hier an.

Könntest mir zwei Gefallen tun:
Schau mal, ob der Fehler mit dieser Version weg ist
Schau Dir mal den commandref-Teil an, ob man damit versteht, wie es funktioniert.


Hier die commandref (haut mit der Formatierung hier nicht ganz hin, in echt ist es hübscher, siehe cr.jpg):

CustomReadings

    FHEM module to define own readings.

    This module allows to define own readings. The readings can be defined in an attribute so that they can get changed without changing the code of the module.
    To use this module you should have some perl and linux knowledge
    The examples presuppose that you run FHEM on a linux machine like a Raspberry Pi or a Cubietruck.
    Note: the "bullshit" definition is an example to show what happens if you define bullshit :-)

    Example (definition in fhem.cfg)
    define myReadings CustomReadings
    attr myReadings room 0-Test
    attr myReadings interval 2
    attr myReadings readingDefinitions hdd_temperature:qx(hddtemp /dev/sda 2>&1) \
    ac_powersupply_voltage:qx(cat /sys/class/power_supply/ac/voltage_now 2>&1) / 1000000 \
    ac_powersupply_current:qx(cat /sys/class/power_supply/ac/current_now 2>&1) / 1000000 \
    perl_version:$] \
    timezone:qx(cat /etc/timezone 2>&1) \
    kernel:qx(uname -r 2>&1) \
    device_name:$hash->{NAME} \
    bullshit: $hash->{bullshit} \
    fhem_backup_folder_size:qx(du -ch /opt/fhem/backup | grep total | cut -d 't' -f1 2>&1)

    Resulting readings:
    ac_powersupply_current 0.236 2014-08-09 15:40:21
    ac_powersupply_voltage 5.028 2014-08-09 15:40:21
    bullshit ERROR 2014-08-09 15:40:21
    device_name myReadings 2014-08-09 15:40:21
    fhem_backup_folder_size 20M 2014-08-09 15:40:21
    hdd_temperature /dev/sda: TS128GSSD320: 47°C 2014-08-09 15:40:21
    kernel 3.4.103-sun7i+ 2014-08-09 15:40:21
    perl_version 5.014002 2014-08-09 15:40:21
    timezone Europe/Berlin 2014-08-09 15:40:21

    Define
    define <name> CustomReadings

    Readings
    As defined

    Attributes
        interval
        Refresh interval in seconds

        readingDefinitions
        Each line represents a definition for a reading. A definition consists of two parts, separated by a colon.
        All lines (except the last one) must end with a backslash
        The first part is the name of the reading and the second part the function.
        The function gets evaluated and must return a result.

        Example: kernel:qx(uname -r 2>&1)
        Defines a reading with the name "kernel" and evaluates the linux function uname -r




Puh na dann wollen wir mal!
Zu dem Skript: Stimmt, das wird bestimmt auch passiert sein, wenn die Kiste unter Last steht. Ist ja schließlich nur ein altes QNAP NAS welches ich manchmal arg strapaziere.

Zu dem Modul:
Diese Änderungen habe ich gefunden!

<     $value =~ s/^\s+|\s+$//g;
---
>     if($value) {
>       $value =~ s/^\s+|\s+$//g;
>     }
>     else {
>       $value = "ERROR";
>     }


Der Rest war nur Commandref. Ich habe es mal aktualisiert.


Zu dem Skript: Eigentlich sollte die IF Abfrage immer einen Wert liefern, aber nun gut.
Ich habe das Modul aktualisiert und beobachte mal. Allerdings war es leider ein sporadischer Fehler :-/


Zur Commandref: Ufff....nun wenn ich ehrlich bin ist das zu kompliziert. Ich glaube 3 Beispiele reichen völlig, das andere verwirrt nur (meine Meinung!).

PS: Ich erkläre mich bereit einen Wiki-Artikel zu schreiben :-)

Vielen lieben Dank für deine Hilfe und das tolle Modul!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

marvin78

Bevor dieses Modul tatsächlich eingecheckt wird, sollte über eine Änderung des Trennzeichens im Attribut readingDefinitions nachgedacht werden. Wenn ich mich recht erinnere, war das in der Ursprungsversion ein Zeilenvorschub (habe es bei mir auf Komma geändert) und das machte Probleme (und ist auch nicht wirklich sinnvoll, wenn man im Frontend arbeitet).

Das Modul ist ansonsten sehr praktisch und sinnvoll.

HCS

Zitat von: P.A.Trick am 02 September 2014, 22:34:15Diese Änderungen habe ich gefunden!

<     $value =~ s/^\s+|\s+$//g;
---
>     if($value) {
>       $value =~ s/^\s+|\s+$//g;
>     }
>     else {
>       $value = "ERROR";
>     }

Damit sollte Dein Problem dann beseitigt sein.


Zitat von: P.A.Trick am 02 September 2014, 22:34:15PS: Ich erkläre mich bereit einen Wiki-Artikel zu schreiben :-)
Cool  8)


Zitat von: P.A.Trick am 02 September 2014, 22:34:15Zur Commandref: Ufff....nun wenn ich ehrlich bin ist das zu kompliziert. Ich glaube 3 Beispiele reichen völlig, das andere verwirrt nur (meine Meinung!).
Da war ich im Beispiel-Fieder.
Ich dachte es wäre nett, wenn man in den Beispielen direkt einige Anregegungen findet, die man einfach übernehmen kann.
Welche würdest Du denn weglassen?
Eventuell könnte man ja im wiki dann einige Beispiele, die man sich einfach dort rauskopieren kann, veröffentlichen.
Beispiel:

Ich möchte meine kernel Version anzeigen
Definition: kernel:qx(uname -r 2>&1) \




HCS

Zitat von: marvin78 am 03 September 2014, 12:16:15
Bevor dieses Modul tatsächlich eingecheckt wird, sollte über eine Änderung des Trennzeichens im Attribut readingDefinitions nachgedacht werden. Wenn ich mich recht erinnere, war das in der Ursprungsversion ein Zeilenvorschub (habe es bei mir auf Komma geändert) und das machte Probleme (und ist auch nicht wirklich sinnvoll, wenn man im Frontend arbeitet).

Das Modul ist ansonsten sehr praktisch und sinnvoll.
Wegen dem Trennzeichen hatte ich auch gegrübelt, als ich das Modul gemacht habe. War mir dann recht unsicher, welches Zeichen man nehmen könnte, ohne mit den funktionsdefinitionen in Konflikt zu geraten und das dann wieder escapen zu müssen.

Kennt jemand ein Modul, wo etwas ähliches vorkommt, an das ich das anlehen könnte. Dann wäre verhindert, dass jetzt eine weitere "Trenner-Variante" erfunden wird.
Das Argument mit dem Frontend leuchtet (leider) ein  :(

marvin78

Ein Attribut, welches von vielen Modulen verwendet wird, oft eine längere Auflistung enthält und bei mir häufig Verwendung findet, ist userReadings. Das benutzt das Komma als Trennzeichen. Andere Attribute verwenden häufig auch den Doppelpunkt. Eine Konsistenz kann ich da nicht erkennen. Komma ist für mich das was am ehesten intuitiv ist.

justme1968

der doppelpunkt wird oft als trennen zwischen device und reading verwendet. das komma oder leerzeichen bei aufzählungen. komma finde ich besser.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

HCS

Ihr habt mich erfolgreich zum Komma überredet  ;D ;D

Also so:

attr myReadings readingDefinitions timezone:qx(cat /etc/timezone 2>&1), kernel:qx(uname -r 2>&1)

P.A.Trick

Zitat von: HCS am 03 September 2014, 13:04:29
Ihr habt mich erfolgreich zum Komma überredet  ;D ;D

Also so:

attr myReadings readingDefinitions timezone:qx(cat /etc/timezone 2>&1), kernel:qx(uname -r 2>&1)

Stimmt, die "newline" ist wirklich nervig bei der Definition.
Zum Komma als Trenner: PERFEKT!
Kannst du bitte das aktualisierte Modul hochladen? Ich teste dann und schreibe den Wiki-Artikel!

Herzlichen Dank schon einmal!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

HCS

Auf Komma umgebaut
commandref aktualisiert (wird dann im Inhaltsverzeichnis bei "Helper modules" auftauchen)

Wenn sich bis zum Wochenende hier keine weiteren Punkte mehr ergeben, dann checke ich es ein.

P.A.Trick

Genial! Funktioniert alles und ich habe mein Versprechen gehalten.
Hier die erste Version des Wiki-Artikels <-- Feedback erwünscht!

http://www.fhemwiki.de/wiki/CustomReadings

Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

HCS

Habe mir das wiki angeschaut. Super!
Finde das sehr übersichtlich, informativ und gut strukturiert.

Zwei Kleinigkeiten, die mir aufgefallen sind:
"Typ Gerätemodul": es ist ein Hilfsmodul (bei Kategorien auch)
"attr myReadings interval 60": passt nicht mit dem Screenshot (2 Sekunden) zusammen

P.A.Trick

Zitat von: HCS am 04 September 2014, 20:38:08
Habe mir das wiki angeschaut. Super!
Finde das sehr übersichtlich, informativ und gut strukturiert.

Zwei Kleinigkeiten, die mir aufgefallen sind:
"Typ Gerätemodul": es ist ein Hilfsmodul (bei Kategorien auch)
"attr myReadings interval 60": passt nicht mit dem Screenshot (2 Sekunden) zusammen

Klasse das freut mich das es dir gefällt. Mal sehen was die anderen sagen!
PS: Die beiden Sachen habe ich geändert!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

HCS

Ja nun passt es.
An einen wiki-schreiber könnte ich mich gewöhnen  ;)

Frage: wie bricht man denn in der fhem.cfg eine Zeile um, um sie in der nächsten fortzusetzen?

P.A.Trick

Backslash? Aber nimm lieber das Webif, das ist sicherer :D

Zum Wikischreiber: Kein Problem, wenn du so geile Module machst bin ich dabei :D
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

HCS

Backslash habe ich versucht. Gab beim Speichern der fhem.cfg Gemecker, dass der Teil in der zweiten Zeile ein "Unknown command" sei.

So habe ich das versucht.
attr myReadings readingDefinitions hdd_temperature:qx(hddtemp /dev/sda 2>&1), \
ac_powersupply_voltage:qx(cat /sys/clas/power_supply/ac/voltage_now 2>&1) / 1000000


10 solche Ausdrücke kann man doch nicht vernünftig bearbeiten, wenn das hintereinander steht!
Darum wollte ich es jetzt gerne reading für reading umbrechen.

P.A.Trick

Zitat von: HCS am 04 September 2014, 21:10:13
Backslash habe ich versucht. Gab beim Speichern der fhem.cfg Gemecker, dass der Teil in der zweiten Zeile ein "Unknown command" sei.

So habe ich das versucht.
attr myReadings readingDefinitions hdd_temperature:qx(hddtemp /dev/sda 2>&1), \
ac_powersupply_voltage:qx(cat /sys/clas/power_supply/ac/voltage_now 2>&1) / 1000000


10 solche Ausdrücke kann man doch nicht vernünftig bearbeiten, wenn das hintereinander steht!
Darum wollte ich es jetzt gerne reading für reading umbrechen.

Hm bei der Shell geht das mit \ . Versuche doch mal direkt ein Newline "\n"!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

HCS

Hab's. Die zweite Zeile darf nicht mit einem Leerzeichen beginnen, dann klappt es.

P.A.Trick

Zitat von: HCS am 04 September 2014, 21:21:53
Hab's. Die zweite Zeile darf nicht mit einem Leerzeichen beginnen, dann klappt es.

Sachen gibt's....das wusste ich auch noch nicht!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

HCS

Geht auch nicht. Komisch. Beim ersten Speichern ging es, dann nicht mehr.
Ich teste das jetzt erst mal in Ruhe aus, bevor ich noch mehr Unsinn schreibe ...

frank

bei diesem attribut geht es doch auch:

attr global motd SecurityCheck:\
\
WEB,WEBphone,WEBtablet has no basicAuth attribute.\
telnetPort has no password/globalpassword attribute.\
Running with root privileges.\
Restart FHEM for a new check if the problem is fixed,\
or set the global attribute motd to none to supress this message.\


bei dir fehlt eventuell noch der letzte backslash. also jede zeile.

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

HCS

Da stand ich gestern ziemlich auf dem Schlauch  :-[

Der Backslash für eine neue Zeile in der fhem.cfg ist schon richtig und das funktioniert auch.
Was mir entgangen war ist, dass man dann im Modul im Attribut die Zeilenumbrüche natürlich mit bekommt, was im Beispiel von frank ja auch Sinn macht und gewollt ist.
Was dann nicht funktioniert hat, war das Modul, und von dem kam auch die Fehlermeldung.

Ich entferne nun im Modul alle Zeilenumbrüche, die im Attribut vorkommen und nun funktioniert es sowohl so:
attr myReadings readingDefinitions perl_version:$],hdd_temperature:qx(hddtemp /dev/sda 2>&1)

als auch so
attr myReadings readingDefinitions perl_version:$],\
hdd_temperature:qx(hddtemp /dev/sda 2>&1)

ph1959de

@HCS: wäre es möglich, aktualisierte Versionen von 98_CustomReadings.pm immer an den zweiten Beitrag (das ist der erste in diesem Thread, den Du erstellt hast) anzuhängen und alte Versionen aus diesem Thread zu entfernen (würde damit in Zukunft auch automatisch passieren)? Sonst geistern am Ende diverse Versionen des Moduls in der Gegend herum und keiner weiß mehr, welches das aktuelle ist, bzw. in welchem Post er die aktuelle Version finden könnte?

Danke, Peter
Aktives Mitglied des FHEM e.V. | Moderator im Forenbereich "Wiki"

HCS

Ich werde das Modul am Wochenende in FHEM einchecken, dann kommt es beim Update immer aktuell mit und jeglicher Download hier im Thread wird hinfällig.
Danach wäre es vermutlich eh sinnvoll, den größten Teil von diesem Thread oder gar den Kompletten zu löschen und einen Neuen zu beginnen.
Als Thread-Besitzer könnte P.A.Trick das evtl. irgendwie glattziehen (nachdem ich es eingecheckt habe), der hat das mit dem wiki schon so schön gemacht.

P.A.Trick

Zitat von: HCS am 05 September 2014, 09:25:42
Ich werde das Modul am Wochenende in FHEM einchecken, dann kommt es beim Update immer aktuell mit und jeglicher Download hier im Thread wird hinfällig.
Danach wäre es vermutlich eh sinnvoll, den größten Teil von diesem Thread oder gar den Kompletten zu löschen und einen Neuen zu beginnen.
Als Thread-Besitzer könnte P.A.Trick das evtl. irgendwie glattziehen (nachdem ich es eingecheckt habe), der hat das mit dem wiki schon so schön gemacht.

Ich kann meinen ersten Post löschen wenn das hilft, ansonsten muss ein Moderator den Threads löschen!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

ph1959de

Wenn die Veröffentlichung sowieso schon unmittelbar bevorsteht, würde ich an HCS' Stelle dann einfach als Ankündigung einen neuen Thread aufmachen, der auch im Wiki (zusätzlich) verlinkt wird.
Aktives Mitglied des FHEM e.V. | Moderator im Forenbereich "Wiki"

HCS

Modul ist eingecheckt, kommt also ab morgen mit dem Update mit.
commandref_frame.html angepasst, dass es bei "Helper modules" aufgeführt wird
Somit sind alle in diesem Thread angehängten Versionen deprecated
Das wiki könnte dann aktualisiert werden.

HCS

Zitat von: ph1959de am 05 September 2014, 18:47:42
Wenn die Veröffentlichung sowieso schon unmittelbar bevorsteht, würde ich an HCS' Stelle dann einfach als Ankündigung einen neuen Thread aufmachen, der auch im Wiki (zusätzlich) verlinkt wird.
Ja, kann ich machen. Dann sollte man diesen hier aber dicht machen, sonst schreiben einge hier und einige in dem neuen und einer reicht ja.

fhainz

Wie wäre es wenn dieser Thread in zB 98_CustomReadings Diskussions Thread oder so umbenannt wird, der Ankündigungs Thread gesperrt und bei bei Updates aktualisiert wird?

Ich hab das Modul (noch) nicht ausprobiert, aber nach dem Update später wird das nachgeholt.

Grüße

HCS

Das Thema "Software, Dokumetation und Support" war schon immer ein Spezialthema  ;D ;D ;D

Der Grund, warum ich die "was wird aus diesem Thread" Diskussion überhaupt eingeleitet habe:
Ich interessiere mich für ein Modul, finde einen Thread dazu, lese mich dann seitenweise durch die Entstehungsgeschichte, sinniere über alle Irrwege und verworfene Ideen die da stehen um am Schluss festzustellen, dass mir das alles nicht hilft, weil ich eigentlich nur wissen wollte was es macht und wie man es verwendet.

Insofern ist der Vorschlag, im Titel anzugeben, dass hier diskutiert wird und einen Ankündigungsthread sauber zu halten vielleicht der richtige Weg.
In diesem Fall hier gibt es (vieeelen Dank) auch noch einen wiki Beitrag. Auf den müsste man dann im "Ankündigungsthread" und im ersten Beitrag von diesem Thread verweisen.
Sinnvollerweise sollte ein "Interessent" erst mal den wiki-Artikel lesen und erst, wenn er damit noch nicht zum Ziel kommt, sich durch das Forum kämpfen.

Ich glaube, dass man aber auch zum Umbenennen eines Thread-Titels einen Moderator braucht.

fhainz

Zitat von: HCS am 06 September 2014, 07:56:32
In diesem Fall hier gibt es (vieeelen Dank) auch noch einen wiki Beitrag. Auf den müsste man dann im "Ankündigungsthread" und im ersten Beitrag von diesem Thread verweisen.
Sinnvollerweise sollte ein "Interessent" erst mal den wiki-Artikel lesen und erst, wenn er damit noch nicht zum Ziel kommt, sich durch das Forum kämpfen.
Find ich auch. Mich hat es auch schon öfters zum verzweifeln gebracht wenn ich in einem Thread mich durch x Seiten lesen muss um herauszufinden was das ding macht.

Zitat von: HCS am 06 September 2014, 07:56:32
Ich glaube, dass man aber auch zum Umbenennen eines Thread-Titels einen Moderator braucht.
Deinen eigenen Thread kannst du umbennen soweit ich weiß. Vielleicht würde es funktionieren wenn P.A. Trick den Titel umbennt und dann seinen ersten Post löscht, dann ist dein Post an erster stelle und du kannst deinen Post entsprechend editieren.

Grüße

HCS

Na dann machen wir das doch mal so.

Dieser Thread wird in "98_CustomReadings.pm - Diskussion" umbenannt und ich aktualisiere meinen Beitrag oben.
Ich mache einen Thread "98_CustomReadings.pm - Ankündigung" auf und wieder zu
P.A.Trick revidiert im wiki den Part über die manuelle Installation

Habe es gerade getestet, kommt bereits beim Update mit

P.A.Trick

Sehr schoen, Wiki passe ich morgen an!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

fhainz

Ich hab gedacht du machst im Ankündigungen Forum einen Thread? :D
Da sollten neue Module angekündigt werden, hab ich irgendwo mal gelesen..

HCS

#37
Oh.  :-[
Naja, nichts mehr zu machen. Ich kann ihn nicht mehr löschen  :(

Und noch einen wäre dann auch übertrieben. Höchstens ein Admin stößt da drauf und schiebt ihn dort hin.
Habe aber gerade den Button "Moderator informieren" entdeckt. Vielleicht kann ich es ja veranlassen...

moonsorrox

das Modul finde ich Klasse... ich habe hier letztens im Forum etwas gefunden von einem User (weiß leider nicht mehr wer) der hat so eine Art Inventar-Liste gemacht. Sind jetzt keine echten Readings aber eben auch Informationen, dass fand ich nicht schlecht für den schnellen Überblick.
Einfach ein
define HM_Components readingsGroup <Gerät>,<Name>,<Model>,<S/N> TYPE=CUL_HM:+NAME,?model,D-serialNr,model

angelegt und man hat eine gute Übersicht der Geräte... Könnte man auch mit rein bringen.. :) Nur so eine Idee
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

P.A.Trick

Zitat von: HCS am 06 September 2014, 08:29:26
Na dann machen wir das doch mal so.

Dieser Thread wird in "98_CustomReadings.pm - Diskussion" umbenannt und ich aktualisiere meinen Beitrag oben.
Ich mache einen Thread "98_CustomReadings.pm - Ankündigung" auf und wieder zu
P.A.Trick revidiert im wiki den Part über die manuelle Installation

Habe es gerade getestet, kommt bereits beim Update mit

Ich habe das Wiki aktualisiert!

@HCS: BTW, die deutsche Commandref fehlt noch :-)  http://fhem.de/commandref_DE.html
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

HCS

Zitat von: P.A.Trick am 07 September 2014, 16:21:33
Ich habe das Wiki aktualisiert!
Prima.

Zitat von: P.A.Trick am 07 September 2014, 16:21:33
@HCS: BTW, die deutsche Commandref fehlt noch :-)  http://fhem.de/commandref_DE.html
Ich schreibe grundsätzlich keine Deutschen commandrefs.

P.A.Trick

Zitat von: HCS am 07 September 2014, 18:00:04
Prima.
Ich schreibe grundsätzlich keine Deutschen commandrefs.

:-) ok ok
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

HCS

Erweiterung:
Es steht nun die Methode CustomReadings_GetHTML zur Verfügung.
Damit kann man sich die Readings ausgeben lassen.
Siehe commandref und hier: http://forum.fhem.de/index.php?topic=26810.0

vondraussen

#43
Hallo zusammen,

ich habe ein paar Funksensoren gebaut, die mir Temperaturen, Luftfeuchte und weitere Zustände an den Pi senden. Die Werte lege ich per Daemon in einer MySQL DB auf einem externen Server ab.

Jetzt habe ich mir mit dem CustomReading und einem Shell Script eine Abfrage der einzelnen "Knoten" gebaut. Das funktioniert auch super.

Aber wie kann ich z.B. per notify auf bestimmte ausgelesene Werte reagieren?

Anbei ein Beispiel meiner Werte. Ich würde z.B. gern bei temperature1>20 (set schalter2 on).
Könnt ihr mir helfen?

Internals
NAME RoomNode.Office
NR 85
STATE T: 24.6, H: 52.6, B: 1333

Readings
battery 1333 2014-11-02 14:54:13
humidity 52.6 2014-11-02 14:54:13
temperature1 24.6 2014-11-02 14:54:13

dancatt

Zitat von: vondraussen am 02 November 2014, 14:57:32
Aber wie kann ich z.B. per notify auf bestimmte ausgelesene Werte reagieren?

Würde mich auch interessieren.
Cubietruck: FHEM-Server 6.0

Homematic: HM-USB-CFG2, HM-CFG-LAN, HM-LC-SW1-FM, HM-LC-Sw1-Pl-DN-R1, HM-CC-RT-DN, HM-TC-IT-WM-W-EU, HM-SEC-SC-2, HM-SEC-SD, HM-PB-6-WM55

marvin78

Na so, wie man auch per notify auf andere Devices und readings reagiert. Das steht nun wirklich alles in der commandref.


dancatt

Zitat von: marvin78 am 12 November 2014, 07:25:19
Na so, wie man auch per notify auf andere Devices und readings reagiert. Das steht nun wirklich alles in der commandref.
:-) da hast du wohl recht.

Gibt es denn eigentlich eine einfache Möglichkeit um Readings anderer Devices mit einem Verweis in ein CustomReading einzutragen?
z.B.:
attr myReadings readingDefinitions RT1-desired-temp:HM-CC-RT-DN:desired-temp

Was eventuell auch nett wäre, wenn man jeder readingDefinitions sagen könnte wie das Intervall zum aktualisieren ist.
Cubietruck: FHEM-Server 6.0

Homematic: HM-USB-CFG2, HM-CFG-LAN, HM-LC-SW1-FM, HM-LC-Sw1-Pl-DN-R1, HM-CC-RT-DN, HM-TC-IT-WM-W-EU, HM-SEC-SC-2, HM-SEC-SD, HM-PB-6-WM55

HCS

Zitat von: dancatt am 12 November 2014, 08:24:36Gibt es denn eigentlich eine einfache Möglichkeit um Readings anderer Devices mit einem Verweis in ein CustomReading einzutragen?
Das würde eigentlich damit gehen, wenn das Komma nicht wäre.
attr myDeviceName readingDefinitions tempReading:{ReadingsVal ("TX29DTH_Outside","temperature",0)}
Muss mal überlegen, mit was man das Komma escapen sollte
Also so z.B.:
attr myDeviceName readingDefinitions tempReading:{ReadingsVal ("TX29DTH_Outside"^,"temperature"^,0)}
Oder so:
attr myDeviceName readingDefinitions tempReading:{ReadingsVal ("TX29DTH_Outside",,"temperature",,0)}


Zitat von: dancatt am 12 November 2014, 08:24:36p[/code]
Was eventuell auch nett wäre, wenn man jeder readingDefinitions sagen könnte wie das Intervall zum aktualisieren ist.
Den Wunsch zu erfüllen wird dann schon einiges aufwändiger. Das würde pro reading einen Timer bedeuten.

justme1968

abgesehen davon das ich nicht so ganz genau weiss warum man readings hin und her kopieren muss :):
wenn das problem das splitten am komm ist dann denke es ist besser nicht zu escapen sondern den parser so intelligent zu machen das er nach einer öffnenden { klammer so lange alle  teile inklusive der normalen nicht escapeden kommas zusammenbaut bis er die schliessende } klammer gefunden hat. das geht mit einem einfachen shift und .= auf die gesplittete liste.

schöner wäre es in fhem einen richtigen parser für so etwas zu haben aber so lange nur auf einer ebene gesplittet wird funktioniert das wieder zusammensuchen eigentlich recht gut.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

HCS

Zitat von: justme1968 am 12 November 2014, 22:30:57
... das geht mit einem einfachen shift und .= auf die gesplittete liste ...

gruss
  andre
Würdest Du mir das ganz grob schreiben?
Einbauen und testen mache ich dann.
Sonst muss ich doch noch perl lernen  ;D ;D ;D

justme1968

das ist aber hilfreich wenn man fhem module baut :)

ich vermute dein problem ist das du das du selber das komma als trennzeichen verwendest und irgendwo etwas in der art hast:my @params = split(",", $def);
foreach $param (@params){
...
}


und das geht dann schief wenn das komma auch innerhalb eines parameters verwendet wird.

das kann man z.b. so 'fixen'

my @params = split(",", $def);
while (@params) {
  my $param = shift(@params);

  while ($param && $param =~ m/^:{/ && $param !~ m/}$/ ) {
     my $next = shift(@params);
     last if( !defined($next) );
    $param .= ",". $next;
  }
}


d.h es wird wie gehabt am , gesplittet aber dann wird geschaut ob der aktuelle teil ein :{ ohne zugehöriges } am ende enthält. wenn das so ist wird so lange das nächste element aus der gesplitteten liste noch mit dran gehängt bis es zum :{ das ein } am ende gefunden ist.

das ganze ist nicht idiotensicher aber für die aller meisten normalen fälle funktioniert es so gut das ich in readingGroup noch kein problem damit hatte.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

HCS

Super, danke!
Jetzt muss es nur noch am Wochenende regnen, dann wird das was.

Zitat von: justme1968 am 20 November 2014, 16:25:09das ist aber hilfreich wenn man fhem module baut :)
Ja, kann man nicht wegdiskutieren  :)

HCS

Eingebaut und committed.
Komma innerhalb geschweifer Klammer geht nun.
Damit ist nun z.B folgende Definition möglich:

define myReadings CustomReadings
tempReading:{ReadingsVal ("TX29DTH_Outside","temperature",0)}

dancatt

Moin,

erstmal vielen Dank für die Umsetzung.
Es müsste nur noch die Commandref und das Wiki angepasst werden :-)

Vielen Dank.
Cubietruck: FHEM-Server 6.0

Homematic: HM-USB-CFG2, HM-CFG-LAN, HM-LC-SW1-FM, HM-LC-Sw1-Pl-DN-R1, HM-CC-RT-DN, HM-TC-IT-WM-W-EU, HM-SEC-SC-2, HM-SEC-SD, HM-PB-6-WM55

HCS

Eventuell erbarmt sich ja P.A.Trick wegen dem wiki  ;)

Fuchks

#55
Besten Dank für das tolle Modul, war aus meiner Sicht überfällig so ein Modul zu haben!

Wenn man ein Reading auf mehrere Readings aufteilen möchte, geht das aus meiner Sicht derzeit nur recht umständlich.
Das wäre vielleicht noch was für die Weiterentwicklung...

Beispiel dazu:
rawreading: "TempIn 21,2 °C TempOut -2,3 °C Wind 5,3 km/h"
soll in diese Readings aufgeteilt werden:
Innentemp: 21,2
Aussentemp: -2,3
Windgeschwindigkeit: 5,3

Meine derzeitige Lösung sieht so aus (das Modul ist definiert als WetterReading):
readingDefinitions: rawreading:qx(Wetter), Innentemp:{[split (/ /, ReadingsVal("WetterReading", "rawreading", ""))->[1]}, Aussentemp:{[split (/ /, ReadingsVal("WetterReading", "rawreading", ""))->[4]}, Windgeschwindigkeit:{[split (/ /, ReadingsVal("WetterReading", "rawreading", ""))->[7]}

Aus meiner Sicht ganz schön umständlich und es wird ein Hilfsreading benötigt, das man eigentlich gar nicht braucht...
Vielleicht geht das ja auch eleganter mit den derzeitigen Mitteln zu lösen?

EDIT: Gerade dazu einen Beitrag gefunden, Änderung muss wohl noch eingecheckt werden

Holgi0815

Hi Ihr,

ich nutze schon seit einiger Zeit das CustomReadings um z.B. meine Plattenbelegung via "df -h" einmal Nachts abzufragen um ggf.eingreifen zukönnen!! Danke für das Modul.

Nun habe ich mir noch mal was "zusammengereimt" was Euch vieleicht auch interessieren könnte und in diese Disskussion passen könnte:
Ich habe fhem auf einem debian und eine FritzBox ohne fhem.

- "curl" muß installiert sein

dann über die FHEM WebObefläche:
define CR_FritzBox CustomReadings
attr CR_FritzBox readingDefinitions IP:qx(curl "http://fritz.box:49000/igdupnp/control/WANIPConn1" -H "Content-Type: text/xml; charset="utf-8"" -H "SoapAction:urn:schemas-upnp-org:service:WANIPConnection:1#GetExternalIPAddress" -d "<?xml version='1.0' encoding='utf-8'?> <s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'> <s:Body> <u:GetExternalIPAddress xmlns:u='urn:schemas-upnp-org:service:WANIPConnection:1' /> </s:Body> </s:Envelope>" 2>&1)

ergibt:
Zitat
IP
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 657 100 377 100 280 45317 33657 --:--:-- --:--:-- --:--:-- 75400 77.6.51.196
da ist schonmal die externe IP abzulesen und die Zahlen sollten die aktuellen Up/Down load Statistiken sein.....

mit einem "vernünftigen" Split in unterschiedliche Readings habe ich mich auch noch nicht weiter auseinandergesetzt
und eine saubere Speicherung in die fhem.cfg ist mir auch noch nicht gelungen (das ist das Zeilenumbruch problem denke ich)

Nur mal so als Info
Viele Grüße
Holger

PS: solche Dinge lassen sich sicherlich auch in einem .sh Script oder via 99_Utils.pm "auseinanderbröseln", aber wenn´s auch Zentral geht warum nicht...

HCS


P.A.Trick

Ich glaube ich habe noch einen kleinen Bug gefunden. Wenn ich das Intervall z.B. auf eine Stunde setze und danach
wieder auf 10 Sekunden wird das neue Intervall nicht mehr aktualisiert.
@HCS: Kannst du das bei der nächsten Version vielleicht fixen?
Danke im Voraus!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

HCS

Ist eigentlich kein Bug. Wenn die Stunde rum ist, geht es im 10 Sekunden Takt weiter.
Muss mal schauen, ob ich, wenn man das Atribut setzt, den aktuellen Timer sofort abbrechen kann und mit dem neuen Interval wieder starte.

P.A.Trick

Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

hulzer

Hallo,

vielen Dank für das Modul.

Ich habe vermutlich einen Bug gefunden, der auftritt, wenn die Auswertung der Scriptrückgabe 0 ergibt.

attr readingDefinitions reading1:0
Perl behandelt ja 0 als false und somit erhält das Reading nicht den Wert 0 sondern "ERROR".

Eine Prüfung auf undef mittels defined sollte reichen oder?

if(defined $value) {
$value =~ s/^\s+|\s+$//g;
}
else {
$value = "ERROR";
$hasErrors = 1;
}


Gruß
Hulzer

HCS

Zitat von: hulzer am 11 März 2015, 09:28:35
Ich habe vermutlich einen Bug gefunden, der auftritt, wenn die Auswertung der Scriptrückgabe 0 ergibt.
OK, danke. Werde es übernehmen.

HCS

Zitat von: hulzer am 11 März 2015, 09:28:35
Ich habe vermutlich einen Bug gefunden, der auftritt, wenn die Auswertung der Scriptrückgabe 0 ergibt ...

Eingebaut und committed. Kommt morgen mit dem Update.

frank

hallo,

ich habe gerade dieses modul entdeckt und bin sehr erfreut. mit folgender definition lasse ich mir speicherdaten von fhem.pl (pid1838) auf meiner fritzbox anzeigen. das funktioniert wunderbar.

readingDefinitions COMBINED:qx(grep -e Vm -e PPid /proc/1838/status),ppid:,vmPeak:,vmSize:,vmLck:,vmHWM:,vmRSS:,vmData:,vmStk:,vmExe:,vmLib:,vmPTE:

leider funktioniert folgendes qx() nicht, um die pid von fhem gleichzeitig rauszusuchen. über telnet auf der fritzbox funktioniert es. es muss am dollarzeichen liegen. auch mit "\$" funktioniert es nicht. dann kommt zumindestens kein error mehr im state.

for i in `ps | grep fhem.pl | cut -f2 -d " "`; do grep -e Vm -e PPid /proc/$i/status; done

vielleicht hat der entwickler eine idee.

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

P.A.Trick

Ich bekomme gerade eine Warnmeldung beim FHEM Neustart:

Smartmatch is experimental at ./FHEM/98_CustomReadings.pm line 115, <$fh> line 127.

Perl     : v5.18.2

Nicht wirklich wichtig, aber mich nerven solche Hinweise :-) Vielen Dank im Voraus!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

HCS

Zitat von: P.A.Trick am 05 Januar 2016, 21:26:58
Ich bekomme gerade eine Warnmeldung beim FHEM Neustart:

Smartmatch is experimental at ./FHEM/98_CustomReadings.pm line 115, <$fh> line 127.

Perl     : v5.18.2

Nicht wirklich wichtig, aber mich nerven solche Hinweise :-) Vielen Dank im Voraus!

OK, steht jetzt mit Prio 2 in der einen Eintrag langen ToDo-Liste  ;D

P.A.Trick

Cool dann wird der Eintrag in ein paar Wochen an dein schlechtes Gewissen appelieren ;-) Danke dir im Voraus!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

HCS

Zitat von: P.A.Trick am 05 Januar 2016, 21:34:45
Cool dann wird der Eintrag in ein paar Wochen an dein schlechtes Gewissen appelieren ;-) Danke dir im Voraus!
Nach vier Wochen kam nun das schlechte Gewissen  ;D
-> Erledigt

P.A.Trick

Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

Torxgewinde

Hi,
Gibt es einen Trick wie man einen langsamen Befehl ausführt ohne das FHEM in der Zeit blockiert?

Grüße,
Torx

HCS

Zitat von: Torxgewinde am 04 August 2016, 21:02:47
Gibt es einen Trick wie man einen langsamen Befehl ausführt ohne das FHEM in der Zeit blockiert?
So direkt nicht. Da wir ja einen Wert als Ergebnis brauchen, muss auf alle Fälle gewartet werden, bis der geliefert wir.

Aber ein möglicher Trick könnte sein, ein bash script zu schreiben, das die langsame Ermittlung des Wertes in einem Hintergrundprozess macht und in eine Datei wegschreibt und immer den beim vorherigen Mal ermitelten Wert sofort zurückliefert.

Oder halt gleich auf Deinem System einen deamon laufen lassen, der die Werte zyklisch ermittelt und hinterlegt, dass FHEM sie nur noch abholen muss.

Torxgewinde

Danke HCS,
Ich habe es so gelöst, dass ein separates Programm (=Skript) beim Starten ausgeführt wird und dann all XX Sekunden die Messung vornimmt und den Wert an FHEM mit einem HTTP-GET Befehl postet. Das externe Programm ist in Python geschrieben. Das ganze habe ich hier im Forum dokumentiert: Forum:#56701 https://forum.fhem.de/index.php/topic,56701.0.html

Danke für die Antwort!

M.Piet

Hallo Zusammen,

ich lasse mir den Wasserstand meiner Zisterne in das Log Pfad: /home/pi/zisterne.log schreiben. Sieht dann so aus:
[...]
2017-02-05_17:00:01 Entfernung: 184.8 cm  Fuelhoehe: 15.2 cm  Liter: 914 l
2017-02-05_18:00:01 Entfernung: 186.9 cm  Fuelhoehe: 13.1 cm  Liter: 784 l
2017-02-05_18:10:02 Entfernung: 186.5 cm  Fuelhoehe: 13.5 cm  Liter: 813 l
2017-02-05_19:00:01 Entfernung: 186.9 cm  Fuelhoehe: 13.1 cm  Liter: 783 l
2017-02-05_20:00:02 Entfernung: 186.5 cm  Fuelhoehe: 13.5 cm  Liter: 808 l


Ich bekomme das Attribut readingDefinitions nicht so hin, dass er mir das ausspuckt was ich will.

Hier bekomme ich ein Error, ich bin leider nicht wirklich mit dem Aufbau der Codezeile bewandert....:
readingDefinitions COMBINED:qx(/home/pi/zisterne.log),Entfernung:,Fuelhoehe:,Liter:

Ich habe schon unzählige Varianten ausprobiert, und einige Stunden probiert....
Hier im Forum habe ich glaube ich alle Beispiele gelesen, die sich mit dem Thema CustomReadings und auslesen aus externen Logs beschäftigen. Bin in einer Sackgasse und über jede Hilfe dankbar.
Vielleicht kann mir jemand helfe...?

Wzut

#74
a. sicher stellen das der fhem User auch Leserechte auf die Datei /home/pi/zisterne.log hat.

b. in der Shell ist das recht einfach zu testen via
tail -n 1  /home/pi/zisterne.log | cut -d " " -f3,7,11 | tr -s ' ' '\n'
das übertragen auf das attr wäre IMHO dann :
readingDefinitions COMBINED:qx(tail -n1  /home/pi/zisterne.log | cut -d " " -f3,7,11| tr -s ' ' '\n'),Entfernung:,Fuelhoehe:,Liter:

liefert allerdings einen Dauerfehler im Webfrontend :( , also nicht nachmachen !
packt man aber die Shell Zeile in eine eigene Datei (Bsp /home/pi/fuell.sh):
#!/bin/bash
tail -n1  /home/pi/zisterne.log | cut -d " " -f3,7,11 | tr -s ' ' '\n'

und macht sie mit chmod +x fuell.sh ausführbar und setzt sie dann ein :
COMBINED:qx(./fuell.sh),Entfernung:,Fuelhoehe:,Liter:
werden wie gewünscht die Readings versorgt.

Eventuell hat ja HCS einen Tipp wie die erste Variante richtig anzuwenden wäre.

Edit : ich habe mir mal das Modul genau angeschaut , schuld ist die Zeile :
my @definitionList = split(",", $readingDefinitions);
D.h. die Readings müssen Komma getrennt sein (klar) , nun ist aber bereits im qx Teil auch eine solche Liste ( -f3,7,11) und damit geht das dann natürlich schief ....


Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

M.Piet

#75
Hallo Wzut,

vielen Dank für deine Antwort.

tail -n 1  /home/pi/zisterne.log | cut -d " " -f3,7,11 | tr -s ' ' '\n'
Wirft mir schön meine 3 Werte aus, die ich als Reading dann brauche.

Variante 1:
readingDefinitions COMBINED:qx(tail -n1  /home/pi/zisterne.log | cut -d " " -f3,7,11| tr -s ' ' '\n'),Entfernung:,Fuelhoehe:,Liter:
Da kommt etwas sehr seltsames in den Readings raus... (siehe Anhang)

Variante 2:
habe ich noch nicht probieren können (von hier aus keine Zugriff), aber da Variante 1 schon nicht klappt, wird diese bestimmt auch nicht klappen.

Wzut

doch das geht , lies in meinem ersten Post das Edit :)
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

M.Piet

Oh, den Edit habe ich übersehen. :-[
Aber da schreibst du doch, das es nicht geht, da die Readings in "komma" gesetzt werden müssen.

OK, wenn es das einfacher macht: mir würde es auch reichen, wenn ich nur die Literzahl als Reading bekomme:
2017-02-05_20:00:02 Entfernung: 186.5 cm  Fuelhoehe: 13.5 cm  Liter: 808 l

Vielen dank schon mal für deine Mühe!!! :)

Wzut

#78
Lies doch bitte einfach nochmal meinen ganzen Post.
Ziel ist es die Kommas im Befehl zu vermeiden.
Lösung A : die Zeile mit den "bösen" Kommas in eine eigene Datei packen ( Variante 2  im ersten Post)
oder B einen anderen Befehl als cut zu benutzen der ohne Kommas auskommt , BSP :
readingDefinitions COMBINED:qx(tail -n1  /home/pi/zisterne.log | awk  '{print \$3} {print \$6} {print \$9}'),Entfernung:,Fuelhoehe:,Liter:
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

M.Piet

Vielen dank! Variante 1 wurde soeben erfolgreich umgesetzt! Danke für deine Mühe und deine Gedult!

Wenn du mal in Nordhessen bist, lade ich dich auf ein Bier ein  8) 8) 8)
Dank dir liebe ich meinen Pi noch mehr!

hugo

Hallo,
verwende auch das Modul um meine UVR1611 auszulesen.
Derzeit habe ich das Interval relativ hoch eingestellt, da ich die Werte nicht immer brauche. Gibt es eine Möglichkeit einen Update gezietl zu erzeugen (ähnlich reload oder update in anderen Modluen)
Raspi 3 mit CUL HM-MOD-UART; nanoCUL
Homematic: HM-SEC-SCo 5x;HM-LC-SW1-BA-PCB 3x;HM-Dis-EP-WM55; HM-LC-SW4-PCB; ARLO;
Somfy RTS Rollo 14x; Alexa; GardenaSmartDevice; Stromzähler(GPIO); shelly1; shelly2.5;Wasserzähler(GPIO);Brennerstuhlsteckdosen;

HCS

Zitat von: hugo am 16 September 2017, 15:19:39
Gibt es eine Möglichkeit einen Update gezietl zu erzeugen
Aktuell nicht, könnte ich aber bei Gelegenheit einbauen.
Also ein "set mySonstwas update"

hugo

Dank für die Info, genau sowas. Bleibe einfach bei dem Thema dran.
Raspi 3 mit CUL HM-MOD-UART; nanoCUL
Homematic: HM-SEC-SCo 5x;HM-LC-SW1-BA-PCB 3x;HM-Dis-EP-WM55; HM-LC-SW4-PCB; ARLO;
Somfy RTS Rollo 14x; Alexa; GardenaSmartDevice; Stromzähler(GPIO); shelly1; shelly2.5;Wasserzähler(GPIO);Brennerstuhlsteckdosen;

HCS

Zitat von: HCS am 17 September 2017, 08:52:41
Also ein "set mySonstwas update"
Eingebaut. Das Update morgen bringt es dann mit.
Bitte testen und Rückmeldung geben. Danke.

edy_80

Kann man damit auch die externe ip abfragen ?  ;D falls ja wie genau? Vielen Dank im Voraus

P.A.Trick

Zitat von: edy_80 am 05 April 2018, 11:38:19
Kann man damit auch die externe ip abfragen ?  ;D falls ja wie genau? Vielen Dank im Voraus

Sofern du eine Fritzbox hast kannst du mit dem alias

define c_showmyip cmdalias showmyip AS list Fritzbox box_ipExtern

abfragen!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

edy_80

Zitat von: P.A.Trick am 05 April 2018, 15:13:53
Sofern du eine Fritzbox hast kannst du mit dem alias

define c_showmyip cmdalias showmyip AS list Fritzbox box_ipExtern

abfragen!

Leider keine Fritzbox ich dachte vielleicht über die Webseite http://icanhazip.com/ da kommt ja als Output die ip

P.A.Trick

Zitat von: edy_80 am 06 April 2018, 10:18:44
Leider keine Fritzbox ich dachte vielleicht über die Webseite http://icanhazip.com/ da kommt ja als Output die ip

define c_showmyip cmdalias showmyip AS { qx(wget -q -O - http://icanhazip.com) }
Evtl. musst du noch wget installieren!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

edy_80

Zitat von: P.A.Trick am 07 April 2018, 09:27:39
define c_showmyip cmdalias showmyip AS { qx(wget -q -O - http://icanhazip.com) }
Evtl. musst du noch wget installieren!

super das funktioniert :) wie kann ich das jetzt als reading fürs tablet ui modifizieren? 

P.A.Trick

Zitat von: edy_80 am 09 April 2018, 10:29:24
super das funktioniert :) wie kann ich das jetzt als reading fürs tablet ui modifizieren?

Versuche es doch mal selbst herauszufinden!? Ich nutze tabletui nicht!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

joco

Hallo
der letzte Eintrag ist zwar schon etwas her, aber ich versuche es hier mal ...

mal abgesehen davon dass einige Beispiele (zB aus der commandref) nicht mehr funktionieren, habe ich hier etwas merkwürdiges

sd_used:qx(df -h | grep /dev/root | cut -f4 | /bin/sed -r 's/[\t ]+/,/g' | cut -d ',' -f2 2>&1), \

diese Zeile verursacht einen ERROR. Ich soll doch gefälligst eine Klammer zu machen ?????

gebe ich das so in der shell (Terminal) ein funktioniert das

was übersehe ich hier ??
für einen Tip wäre ich dankbar ...

amenomade

Shafft er wirklich dieses customReading so zu kreieren, oder kreiert er dann Quatsch-Readings?

Das Problem ist wahrscheinlich, dass in readingDefinitions das Koma ein Trennzeichen zwischen mehrere Definitionen ist.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

joco

Hallo amenomade,

boah !!!  Vielen Dank !!!
Was habe ich da schon für Kombinationen ausprobiert ....

Ich dachte weil der Trenner etc in Hochkomma steht wäre das shell-only

um allen Eventualitäten auszuweichen habe ich jetzt den Unterstrich probiert
und siehe da -- es funktioniert !!!!

Begeisterung zu später Stunde

perez

#93
Hallo,

warum wird bei mir die Datei-Größe nicht angezeigt, ist es noch aktuell? Alle andere Befehle gehen ohne Probleme.
Laut Wiki ist es ja möglich: https://wiki.fhem.de/wiki/CustomReadings

attr myReadings readingDefinitions fhem_backup_folder_size:qx(du -ch /opt/fhem/backup | grep total | cut -d 't' -f1 2>&1)

Bekomme keine Werte, Feld bleibt leer.
Danke!

amenomade

Schau mal in der Log

Und Du kannst auch zuerst den Befehl in einer Console testen.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Loctite

Zitat von: perez am 11 Januar 2021, 22:14:11

attr myReadings readingDefinitions fhem_backup_folder_size:qx(du -ch /opt/fhem/backup | grep total | cut -d 't' -f1 2>&1)

Bekomme keine Werte, Feld bleibt leer.
Danke!

Falls es noch jemand interessiert da ich gerade selber verzweifelt gesucht habe:

In dem Beispiel wird nach den Wörtern "total" und dann nach dem Buchstaben "t" gesucht.
Bei einem deutschen System heißt es aber "insgesamt".

Testen über die Konsole mit :
du -ch /opt/fhem/backup

Deshalb wird nichts angezeigt. Richtig ist es mit

attr myReadings readingDefinitions fhem_backup_folder_size:qx(du -ch /opt/fhem/backup | grep insgesamt | cut -d 'i' -f1 2>&1)

Anstelle von -ch kann auch -mc benutzt werden. Dann ist die Einheit nicht mehr dabei und es wird nur eine reine Zahl ausgegeben.

Torxgewinde

@Loctite:
Da solche Fehler beim greppen öfters vorkommen, sobald man die Übersetzungen nutzt, kann man sich auch einfach den Befehl auf Englisch lokalisieren lassen. Die Umgebungsvariable LC_ALL ist dafür nützlich.

LC_ALL=C du -ch /opt/fhem/backup | grep total