Beiträge von Reachy

    Hallo Hoppel,


    ich wiederhole jetzt nur was ich oben geschrieben habe, weil das die meisten Fragen aus meienr Sicht beantwortet.


    Deine Frage zu was ist mit Array gemeint:


    {

    "messages" : [

    {

    "state" : "gegangen",

    "message" : "Aschebox voll, bitte entleeren",

    "time" : "2019-08-29T21:38:39"

    },

    {

    "state" : "gekommen",

    "time" : "2019-08-29T21:38:39",

    "message" : "Raumaustragung kontrollieren"

    },

    {

    "state" : "quittiert"

    "message" : "Steuerung neu gestartet",

    "time" : "2019-08-29T21:38:39",

    }

    ]

    }


    hinter den aktuell gesendeten Parametern und Messwerten werden die oben aufgeführten Meldungen unter einem Topic "messages" übermittel. Alle Meldungen die ich heute in der Heizung ansehen kann, kann man dann auch in der Hausautomatisierung anzeigen.
    Wie soll das Einsortieren denn passieren? Da müsste man ja alle bekannten Fehler den Baugruppe zu ordnen? Könnte meiner Ansicht nach nur über die Baugruppenkonfig manuelle erfolgen. Sehe ich ehrlich gesagt keinen Mehrwert und macht die Heizung heute ja auch nicht.



    Mit den folgenden Optionen kann man das aktivieren oder nicht bzw. einschränken wieviele Meldungen gesendet werden:


    Vorschlag fürs Setup:

    Aktiv-Flag: on/off

    Anzahl Tage (0.. alle, 1 - xxxx ... xxxx Tage) --> wieviele Meldungen überschickt werden in Tagen


    Eine Reaktion der Hausautomation kann nur auf den Störmelder-Parameter (Störmeldung_0x14) erfolgen, der ja unabhängig davon schon mit gesendet wird.


    Eine Logik, dass nur neue Meldung gesendet werden macht für meinen Zweck keinen Sinn, weil wenn ich die Hausautomation mal neustarten muss, sehe ich ich die Meldungshistorie nicht mehr, die mich schon interessiert.


    Also wenn ich deinen Post richtig gelesen habe, ist der einze Unterschied, das für FHEM nur neue Meldungen gesendet werden soll. Reicht es dann nicht den Meldungszeitraum auf 1 Tag zu setzen? Oder man könnte Tag oder einen anderen Zeitraum auswäheln. Dann kommt halt nur für den Zeitraum lang die entsprechende Meldung mit? Wenn nicht würde das Setup so aussehen und ist deutlich aufwendiger zu programmieren:


    Vorschlag fürs Setup:

    Aktiv-Flag: on/off

    Anzahl Tage (0.. alle, 1 - xxxx ... xxxx Tage) --> für wieviele Tage werden Meldungen übermittelt

    nur neue Meldungen senden: on/off



    optional: Baugruppentabelle erweitern für Zuordnung-Fehler --> Fehlermeldungen in die entsprechende Baugruppe einsortieren


    Das sollte dann jetzt zumindest unseren Vorstellungen genügen, richtig?





    @horchi,


    wie siehst du das? Was davon wäre mit annehmbarem Aufwand machbar und würdest du überhaupt machen wollen?


    VG


    Reachy

    @horchi,


    und falls du irgendwann mal Zeit und Lust hast neben dem Pool buddeln, vielleicht bringen wir die Fehlermeldungen noch mit rein.


    Deinen Vorschlag war:


    {
    "messages" : [
    {
    "state" : "gegangen",
    "message" : "Aschebox voll, bitte entleeren",
    "time" : "2019-08-29T21:38:39"
    },
    {
    "state" : "gekommen",
    "time" : "2019-08-29T21:38:39",
    "message" : "Raumaustragung kontrollieren"
    },
    {
    "state" : "quittiert"
    "message" : "Steuerung neu gestartet",
    "time" : "2019-08-29T21:38:39",
    }
    ]
    }



    Das einfach Array an die anderen Baugruppen/Werte hinten dran hängen.



    Vorschlag fürs Setup:
    Aktiv-Flag: on/off
    Anzahl Tage (0.. alle, 1 - xxxx ... xxxx Tage) --> wieviele Meldungen überschickt werden in Tagen


    Ob noch eine aktuelle Störung vorliegt müsste ja über Stoermeldung_0x14
    ersichtlich sein. Wäre für mich ein pragmatischer Ansatz um die
    Meldungen zu sehen und ob eine Störung vorliegt.



    hoppel,


    auch in Ordnung für FHEM? Ist ja im Endeffekt eine ähnliche Struktur wie du das für die Messdaten brauchst für FHEM.


    VG


    Reachy

    Bin mir jetzt nicht sicher was du mit eigenem Sensor meinst. Ich habe in der Tabelle valuefacts einen Parameter mit der Nummer 999 (0x3e7) angelegt. Der wird aber beim Abfragen der Heizung schon automatisch in die Tabelle samples geschrieben mit Wert Null, weils den in der heizung ja nicht gibt. Somit gibt es dort die Adresse 999, Type 'VA' und time schon. deshalb bin ich ja auch die idee gekommen, dass ich nur ein update mache.

    Aktuell mach ich ein update auf den letzten Datensatz des Parameters 999. Im Web-IF wird der Wert des Parameters dann auch richtig angezeigt inkl. aller anderen aus der Heizung. So solls meiner Ansicht nach auch sein.


    wenn ich einen neuen Datensatz anlege mit einem Insert, wird im WebIF nur noch der Parameter angezeigt den ich mit dem Insert in die Tabelle geschrieben habe.


    Viele Grüße


    Reachy

    Hi Horchi,


    das Skript after-update.sh läuft nun. hab 2 Wege probiert.
    a) mit sql-Insert kommt der Wert in die Tabelle Samples, aber im WEB-IF wird nur noch der eine Wert angezeigt weil ja das Skript P4GETVALUE.py sich nur die Daten zum letzten Zeitstempel holt. Und über MQTT bleibt der Wert bei 0. Es kommt nichts an.
    b) mit sql-update auf den letzten Wert dieses Parameters wird auch der richtige Eintrag in Samples geupdated. Das WEB-IF zeigt auch alles richtig an inkl. dem zusätzlichen Wert. Aber über MQTT kommt auch nur "0". Ich vermute, die MQTT-Nachricht wird vorher verschickt, bevor "after-update-sh" ausgeführt wird. Datentechnisch sieht das jetzt richtig aus, aus meiner Sicht.


    Oder hast du noch eine Idee woran es liegen könnte?


    VG


    Reachy

    after-update trifft es genau. Werd ich die Tage mal probieren...

    So.. Tabelle valuefacts ist erweitert um den Parameter FuellstandimErdtank 0x03e7 --> (999). Es sind 457 Einträge aktuell in der Tabelle


    Ich habe dann manuell einen Wert mit p4 setp -a 0x3e7 -v 55 gesetzt:



    pi@raspberrypi:/p4d/linux-p4d/scripts $ p4 setp -a 0x3e7 -v 55
    Parameter 0x03E7 changed successfully to 55%


    den ich auch mit p4 getp -a 0x3e7 zurückbekomme:




    pi@raspberrypi:/p4d/linux-p4d/scripts $ p4 getp -a 0x03e7
    Address: 0x03e7; Unit: %; Digits: 0; Current: 55; Min: 0; Max: 100; Default: 30 - Factor: 1 (factor already applied)
    => 55%


    Der neue Parameter taucht nun auch in der Aufzeichnung und in der Übersicht der ausgelesenen Werte auf. Aber der Wert ist sowohl im Webif = 0 als auch in der MQTT Nachricht. Hab ich evtl noch was vergessen anzupassen? Oder funktioniert das ggf. doch nicht so einfach.


    Wenn ich den Wert direkt in der Tabelle eintrage ist er bis zur nächsten Messung da. danach wird er mit 0 überschrieben. Oder heisst das, es funktioniert nur mit dem after-update.skript, weil nach dem Update und vor dem MQTT das eingetragen wird?


    VG


    Reachy

    Das funktioniert ist aber was das WEBIF angeht nicht (oder nicht mehr) ganz rund. Idee dahinter ist Skript Aktionen in die Web Oberfläche integrieren zu können.Dazu legt man unter /etc/p4d/scripts.d/ (den Ordner sollte es schon geben) ausführbare Shell Scripts ab. Diese werden nach dem nächsten Neustart des p4d (systemctl restart p4d) im WEBIF unter Setup -> Scripst angezeigt. Alle welche man dort mit einem Häkchen aktiviert werden nun als Button auf der Seite 'Aktuell' angezeigt und man kann sie nun mit eben diesem Button ausführen - wenn keine Meldung kommt hat der Script Aufruf geklappt - was auch immer das Script dann m,acht sieht man nicht. Das hatte sich mal ein User gewünscht ...


    Denke aber nicht dass dir das bei deinem Problem hilft.
    Denke was du verwenden kannst ist eher /etc/p4d/after-update.sh, dieses Skript wird, sofern vorhanden , nach jeder zyklischen 'Update Runde' automatisch aufgerufen .
    Wenn du in dem Skript diene Werte abfragst und in die samples Tabelle einträgst sollte das klappen. Einen neues Sensor kannst du dir manuell einmalig in der Tabelle valuefacts anlegen, für den suche dir einfach eine Adresse - die 'VA' Adressen gehen bei der Heizung m.E. bis 255, nimm einfach die Adresse 1000 mit dem Typ 'VA'. Einheit Namen und Titel kannst du nach belieben setzen.

    after-update trifft es genau. Werd ich die Tage mal probieren...

    Hallo,

    OT:Wie teuer war der Erdtank bei welcher Größe?
    Zufrieden damit?


    Gruß
    meute

    Ich hatte einen Komplettpreis bei der Heizung. Kann ich nicht sagen. Was der neu kostet. Zufrieden ja. Nach dem
    Der Ansaugschlauch wurde nach 4 Jahren getauscht . Jetzt saugt sie wieder ohne Probleme. Ich hoffe der Schlauch hält länger.. denke mal der wurde beim Einziehen beschädigt an einer Biegung. Ich hab dann von privat den gleichen Pelletskugeltank von Nau gekauft als Wasser-Zystern. 500€. Die ist unter dem Gartenhäuschen vergraben. Durchmesser, 2,5m glaube ich. Reicht für ca. 5t Pellets. oder ca. 8 m3 Wasser



    Gruß


    Reachy

    @horchi,


    funktioniert das Ausführen von eigenen Skripten über den Reiter Skripte im Setup? Und wenn wie? Ich möchte den Füllstand meines Pellet-Erdtanks ggf. mit senden. Die Idee wäre ich nehme einen nicht genutzten Wert in der Aufzeichnung meiner P4 und setze den Wert mit "p4 setp ....." den der TOF-Sensor misst. Oder geht das nicht, weil die leeren Werte auch jedesmal überschrieben werden bei der Abfrage? Hab einen äteren beitrag gefunden, da war die Funktion noch nicht implementiert. Vielleicht geht das ja schon... :)


    VG


    Reachy

    pi@raspberrypi:/tmp $ sudo gdb /usr/bin/p4d core
    GNU gdb (Raspbian 8.2.1-2) 8.2.1
    Copyright (C) 2018 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    Type "show copying" and "show warranty" for details.
    This GDB was configured as "arm-linux-gnueabihf".
    Type "show configuration" for configuration details.
    For bug reporting instructions, please see:
    <http://www.gnu.org/software/gdb/bugs/>.
    Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.



    For help, type "help".
    Type "apropos word" to search for commands related to "word"...
    Reading symbols from /usr/bin/p4d...done.
    [New LWP 1323]
    [Thread debugging using libthread_db enabled]
    Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".
    Core was generated by `p4d -t -n'.
    Program terminated with signal SIGSEGV, Segmentation fault.
    #0 strlen () at ../sysdeps/arm/armv6/strlen.S:26
    26 ../sysdeps/arm/armv6/strlen.S: Datei oder Verzeichnis nicht gefunden.
    (gdb) bt
    #0 strlen () at ../sysdeps/arm/armv6/strlen.S:26
    #1 0x766cd558 in __GI___strdup (s=0x0) at strdup.c:41
    #2 0x0004a6f4 in P4d::getConfigItem (this=0x166930, name=0x5208c "mqttUser", value=@0x166a8c: 0x0, def=0x0) at p4d.c:2474
    #3 0x000410b4 in P4d::readConfiguration (this=0x166930) at p4d.c:482
    #4 0x000405d0 in P4d::initDb (this=0x166930) at p4d.c:400
    #5 0x0003e9a8 in P4d::init (this=0x166930) at p4d.c:91
    #6 0x0002ecac in main (argc=3, argv=0x7ec507c4) at main.c:190

    Merci!! Hier wäre der Trace:


    pi@raspberrypi:~ $ sudo gdb /usr/bin/p4d core
    GNU gdb (Raspbian 8.2.1-2) 8.2.1
    Copyright (C) 2018 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    Type "show copying" and "show warranty" for details.
    This GDB was configured as "arm-linux-gnueabihf".
    Type "show configuration" for configuration details.
    For bug reporting instructions, please see:
    <http://www.gnu.org/software/gdb/bugs/>.
    Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.



    For help, type "help".
    Type "apropos word" to search for commands related to "word"...
    Reading symbols from /usr/bin/p4d...done.
    [New LWP 1310]
    [Thread debugging using libthread_db enabled]
    Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".
    Core was generated by `p4d -t -n'.
    Program terminated with signal SIGSEGV, Segmentation fault.
    #0 strlen () at ../sysdeps/arm/armv6/strlen.S:26
    26 ../sysdeps/arm/armv6/strlen.S: Datei oder Verzeichnis nicht gefunden.
    (gdb)