Beiträge von Seeandfeel

    Hi,


    das hilft mir leider auch nicht weiter. :( Wenn ich es so wie von dir vorgeschlagen eintrage, werden die Werte immer wieder überschrieben und kommen nicht gesammelt. Also habe ich immer nur den zuletzt übertragenen State von MQTT.

    Das mit dem "Value" im Wert ist echt nervig :) - versehe gar nicht das nur IOBroker das Problem hat. Ist ja "nur" ein MQTT Thema.. - eigentlich. :D

    Ich vermute fast das es dieses "All in One" in der neuen Version nicht mehr so gibt :(.

    Hi zusammen,


    ich habe meinen P4D per Docker neu aufgesetzt.

    Aufgrund meinen "Value" Problem in IoBroker hab ich in IoBroker einen Parse am laufen der das Value entfernt um sauber mit dem Daten arbeiten zu können.

    Also z. B. das hier:


    Ist:

    Code
    {
    "value": 63.5
    }

    Soll:

    Code
    63.5

    Leider finde ich das Setting nicht mehr das ich damals in dem "Data Topic Name" eingetragen habe, so das er alle Daten in ein (JSON) Feld im IOBroker schreibt um darauf den (IoBroker) JSON Parse laufen zu lassen.

    Aktuell habe ich:

    "p4d2mqtt/sensor/<NAME>/state" was natürlich jede Daten in ein einzelnes Feld schreibt.


    Kann mir jemand helfen?

    was genau erklären, meinst du das Sonderzeichen am Ende? Wenn ja kommt das so wirklich vom p4d (ich kann es gerade nicht zu 100% ausschließen)? Siehst du es auch wenn du an der Kommandozeile z.B. mit mosquitto_sub das Topic ließt?

    Ds � ist anscheinend ein Leerzeichen in UTF-8 (?).
    Muss vom p4d kommen, mein MQTT nimmt das JSON nur entgegen und hat da schon einen Parse Fehler.


    Ich bin jetzt auch nicht sooo fit mit MQTT und musste mir "Hilfe holen". Einer der geholfen hat meinte:
    Zur Erklärung dieses Zeichens am Ende. Es handelt sich wohl hier um das String Ende Zeichen welches in C den Wert (hex) 0x0 hat. Fälschlicherweise wird wohl die Länge des Strings beim MQTT senden falsch berechnet und dieses Zeichen mit gesendet.


    Jedenfalls Parse ich jetzt in IoBroker ohne dem letzten "Leerzeichen" (?).


    Code
    let json = str.substr(0, str.length - 1);

    War zwar Aufwand, aber jetzt bin ich zufrieden:

    Hi @horchi,


    ich hab die Tage mal versucht das intern in IoBroker zu parsen (Komplette JSON im "Wert").


    MQTT Topic: p4d2mqtt/sensor/P4/state


    Leider kann ich nicht parsen weil es zum Ende ein Sonderzeichen enthält, siehe hier:


    Code
    mqtt.0 (12794) Client [] Cannot parse {"Heizung": {"Kesseltemperatur_0x0": {"value": 71.0}, "Status": {"value": "Heizen"}, ......................................
    BreitbandsondeInnenwiderstand_0xf7": {"value": 298.0}, "Resetierbarerkg-Zaehler_0x111": {"value": 50.0}, "Resetierbarert-Zaehler_0x112": {"value": 4.0}}}�

    Kannst du dir das erklären? Im GitHub finde ich leider nicht das passende Modul dazu.

    Hi @konreas und @enroc ,Ok, dann kommen die Daten bei euch auch ("falsch") mit "value" an.
    Im IoBroker kann ich leider in den beiden MQTT Servern relativ wenig konfigurieren. Parsen wäre intern möglich aber da muss ich erstmal Zeit dafür haben..
    Aber ich weis ich wenigstens das ich ich mir die Arbeit machen kann / darf. ;)

    das ist dann aber iobroker seitig (dieses json kommt nicht vom p4d) kannst du das dort einstellen?


    Hm, ich dachte dass das in der JSON mit kommt. Aber stimmt, das wird ja dann erst geparsed.


    Also, du meinst weil "nur" das gesendet wird, oder?


    Code
    p4d: -> (p4d2mqtt/sensor/Abgastemperatur_0x1)[{"value": 72.0}]

    Dann ist der Parse auf { } falsch. Einstellen ist mir nix bekannt, die MQTT Module werden eigentlich nur installiert, einstellen musste man nie was.
    Ich schau mal..

    Gibt meine ich 3-4 mit IoBroker hier, alle hatten (meine ich) das Problem mit der Value. Bin noch gespannt was @enroc sagt.


    Mir ist noch aufgefallen das der Type nicht stimmt, evtl. liegt es daran das es falsch geparsed wird:


    Tasmota:


    Code
    "common": {
        "type": "number",
        "role": "value.power.consumption",
        "read": true,
        "write": false,
        "unit": "kWh",
        "name": "Steckdose_Schrank ENERGY  Total"

    P4D:



    Code
    "common": {
        "name": "p4d2mqtt/sensor/Abgastemperatur_0x1",
        "write": true,
        "read": true,
        "role": "variable",
        "desc": "mqtt server variable",
        "type": "string"
      }


    Leider auch nicht einfach testbar. :(


    Entweder ich bastel mir mal was zum testen oder ich parse dann intern im IoBroker.
    Schade aber natürlich trotzdem Danke @horchi !

    Ja daran hat es vermutlich gelegen.


    Das mit dem value ist komisch wen man davon ausgeht das der iobroker mit json umgehen kann, ich kenne ihr jedoch absolut nicht


    Ich verstehe es auch nicht. MQTT von Tasmota etc. passt alles (hab da einige am laufen).
    Hast du keine Idee wie ich das debuggen könnte? Gibts evtl. configs o. ä. deines MQTT Senders? Möchte gerne vermeiden das ich "intern" parsen muss. :)

    Guten Abend,
    ich habe immer mal wieder Aussetzer bei MQTT nach ioBroker. Ich bin auf einen Log aufmerksam geworden:

    Hi Enroc,


    Benutze hier auch IoBroker und habe seit dem Update auch deine Probleme. :( . Das taucht bei mir jetzt auch immer auf (vor Update nicht):

    Code
    Feb  9 00:30:44 solaranzeige p4d: client 0xffffffff not found! [{"event": "all", "object": []}]


    Gleich noch zu IoBroker, haben bei dir die "Werte" jemals gestimmt? Hab 2 MQTT Broker probiert (Sonoff & MQTT), immer die Value mit im Wert.
    Ein anderer User hatte das auch schon berichtet. Mich wundert nur, dass das ganze dann im HomeAssistent o. ä. keine Probleme macht.

    ich hab jetzt p4d zu laufen gebracht und läuft sogar über einen virtuelen COM-Port (tcp).

    Hi, kannst du mir sagen mit welchen Konverter du das gemacht hast? Heute Vormittag war ich erst auf der Suche nach so einer Lösung ;) , da ich gerne einen RP abschalten würde.



    Ansonsten hat sich ja einiges getan, auch mit MQTT. Hoffe das klappt jetzt sauber mit iobroker, zum testen ist genügend da.


    PS:
    An die "Updater", lasst euch Zeit nach dem Update, das "alter table" läuft beispielsweise jetzt schon ~10 Min. bei mir:


    +----+------+-------------------+------+---------+------+----------------+-------------------------------------------------+----------+
    | Id | User | Host | db | Command | Time | State | Info | Progress |
    +----+------+-------------------+------+---------+------+----------------+-------------------------------------------------+----------+
    | 23 | p4 | xxx.xxx.xxx.xx:47496 | p4 | Query | 750 | altering table | create index idxaggregate on samples(aggregate) | 99.138 |

    Vorab, Danke für dein schnelle Antwort.


    Leider klappt das nicht, der Wert enthält "value", diese sollte eigentlich bei "Rolle" gesetzt sein.
    Im IoBroker / MQTT Adapter kommt es so an:


    Debug vom MQTT:

    Code
    Server received "p4d2mqtt/sensor/Kesselstellgroesse_0x12/state" (string): {"value": 64.0}


    Ich denke das "value" und der "Wert" anders gesetzt werden müssten.
    Kann man deinen verwendeten MQTT evtl. mal um konfigurieren? Hat der eine Config o. ä.?




    SonOff als Beispiel:




    Zu den Problemen:

    • Ok, super wenn du schon eine Lösung hast (Sorry, so weit habe ich nicht zurück gelesen)
    • Ich bin mir zu 99% sicher das die Docker IP eingetragen war (Weil ich mich erst gewundert hatte wo die hergekommen ist). Hab die im "halb" funktionierenden WB IF auf meine priv. Adresse umgestellt (192...) -> Sichern -> Neu Laden -> Interface i. O. Hat mich auch ziemlich verwundert, weil ich das auch so verstanden hatte das dies nur eine Variable für den Mail Versand ist. Hab es zur Sicherheit gerade nochmal zurückgestellt. Passt alles.. - also hast du wohl recht. Komisch, war mir der Sache ziemlich sicher .. ;)

    Vorab @horchi, Tausend Dank für deine Arbeit :) !
    Ich hatte jetzt schon länger p4d am laufen (2016?) und es war mal wieder an der Zeit für ein Upgrade, hat sich ja einiges getan ;)


    Hab einiges probiert (dazu gleich mehr), aber erstmal zu meinen aktuellen Problem. Der MQTT läuft soweit ganz gut, leider kommen die Werte falsch in iobroker an.
    Das Feld "Wert" enthält nicht den Wert sondern z. B. "{"value": 180.0}"


    Könnte evtl. an der Definition im MQTT liegen (?):


    "common": {
    "name": "p4d/Abgastemperatur_0x1",
    "write": true,
    "read": true,
    "role": "variable",
    "desc": "mqtt server variable",
    "type": "string"
    }


    Beispiel von SonOFF Steckdose:


    "common": {
    "type": "number",
    "role": "value.power.consumption",
    "read": true,
    "write": false,
    "unit": "kWh",
    "name": "Steckdose_Buero ENERGY Today"
    }


    Kannst du mir sagen wo das evtl. zu ändern / definieren wäre?



    Des weiteren wollte ich P4D im Container laufen lassen, klappte ganz gut... - gescheitert ist es letztendlich am Systemd (im Build, also fast fertig).
    Kratze mit Docker auch nur an der Oberfläche aber evtl. hilft es ja zukünftigen. ;) Falls ich Zeit hab schau ich es mir noch genauer an.


    Bugs habe ich auch noch festgestellt (soll ich ein Issue machen?):

    • Webinterface reagiert lange nicht nach setzen MQTT Server: Wenn MQTT Server nicht erreichbar, reagiert das WebIF nicht mehr da dieses zwingend versucht Broker zu erreichen
    • Webinterface total zerstückelt (?) / Grafiken nicht lesbar: Behoben durch setzen "URL der Visualisierung:" -> Hier war die IP meines Docker0 IF eingetragen (evtl. nicht nach eth0 abgefragt?)


    Tausend Dank nochmal!


    Seeandfeel