Fröling: [ANNOUNCE] p4d - Visualisierung und Einstellung der S-3200 via COM1

Es gibt 4.961 Antworten in diesem Thema, welches 1.496.294 mal aufgerufen wurde. Der letzte Beitrag () ist von ranseyer.

  • Meinst Du das?Fröling: [ANNOUNCE] p4d - Visualisierung und Einstellung der S-3200 via COM1


    Dann muss man also die Adresse als Dezimalzahl angeben.


    Hat mit mosquitto_pub -t... schon jemand erfolgreich Values in die Anlage geschrieben?
    Ich will mir da nichts zerschiessen.

    Ja, das funktioniert.
    Zur Not einfach den Wert an der Adresse auslesen und merken und zurück setzen, sollte nicht der richtige geändert worden sein.


    Solltest du den Start der Pelletsbefüllung-Wert ändern wollen kann ich dir auf jeden Fall sagen dass das geht ;)

  • Solltest du den Start der Pelletsbefüllung-Wert ändern wollen kann ich dir auf jeden Fall sagen dass das geht ;)


    Würde das so passen?
    Adresse als Dezimalzahl.


    EDIT:
    Bei meinem Statement fehlt doch hinten ein Hochkomma? Oder nicht?
    Hier fehlt es vermutlich auch.


    Code
    # Wert mit Mosquitto ins p4d schreiben
    #
    # 'Start der 1. Pelletsbefüllung'
    mosquitto_pub -t mqtt2p4d/command -p 1883 -m '{ "command" : "parstore", "address" : 60, "value" : "420" }
    #
    # 'Start der 2. Pelletsbefüllung'
    mosquitto_pub -t mqtt2p4d/command -p 1883 -m '{ "command" : "parstore", "address" : 516, "value" : "900" }


    Vorarbeit:
    Adressen von Hexadezimalzahl in Dezimalzahl umrechnen.

    Code
    # Adressen von Hexadezimalzahl in Dezimalzahl umrechnen.
    #
    # 'Start der 1. Pelletsbefüllung'
    # Hexadezimal 0x003c = Dezimal 60
    #
    # 'Start der 2. Pelletsbefüllung'
    # Hexadezimal 0x0204 = Dezimal 516
    Code
    # Benötigte Adressen der p4d Menüeinträge ermitteln
    p4 menu | grep "Pelletsbefüllung"
    #Ergebnis:
    181) Address: 0x003c, parent: 0x0387, child: 0x0000; 'Start der 1. Pelletsbefüllung'
    182) Address: 0x0204, parent: 0x0387, child: 0x0000; 'Start der 2. Pelletsbefüllung'

    Fröling Pelletskessel PE1 25 kW, Fröling Hygiene-Solarschichtspeicher H3 850, 4x Buderus Flachkollektor SKN4.0-w


    fraenk for friends Code: MATF103

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


    Code
    Feb 05 21:34:56 pi4HH p4d[755]: -> (p4d2mqtt/sensor/PufferladezustandDiskret_0x1c0/state)[{"value": 3.0}]
    Feb 05 21:34:56 pi4HH p4d[755]: -> (p4d2mqtt/sensor/VergangeneZeitseitletzterWaermetauscherreinigung_0x1c7/state)[{"value": 0.0
    Feb 05 21:34:56 pi4HH p4d[755]: Processed 60 samples, state is 'Feuer Aus'
    Feb 05 21:34:56 pi4HH p4d[755]: client 0xffffffff not found! [{"event": "all", "object": []}]
    Feb 05 21:34:56 pi4HH p4d[755]: Updating error list
    Feb 05 21:34:57 pi4HH p4d[755]: Updating error list done in 1181ms
    Feb 05 21:35:16 pi4HH p4d[755]: Error: mqtt_sync for connection 'mqtt2p4d/command' failed, result was -2147483631 'MQTT_ERROR_S
    Feb 05 21:35:16 pi4HH p4d[755]: Info: Disconnecting 'mqtt2p4d/command'

    Das MQTT Topic habe ich mit p4d2mqtt/sensor/<NAME>/state konfiguriert.


    In der Ausgabe oben steht allerdings ein Fehler der sich auf mqtt2p4d/command  bezieht.


    mqtt2p4d <> p4d2mqtt


    Hat jemand eine Idee woher das kommen kann?


    Besten Dank :)

  • Solltest du den Start der Pelletsbefüllung-Wert ändern wollen kann ich dir auf jeden Fall sagen dass das geht ;

    Bei mir hat es leider nicht funktioniert. :(


    mosquitto_pub -t mqtt2p4d/command -p 1883 -m '{ "command" : "parstore", "address" : ${ADRESSE_FUELLZEIT_1_DEZ}, "value" : "${EINGESTELLTE_FUELLZEIT_1}" }'


    Vermutlich, weil ich die Adresse und den Value als Variable übergebe.
    Wie lautet die mosquitto_pub-Syntax mit Variablen?


    Hier der Inhalt der genutzten Variablen:

    Code
    $ echo "ADRESSE_FUELLZEIT_1_DEZ: "${ADRESSE_FUELLZEIT_1_DEZ}
    ADRESSE_FUELLZEIT_1_DEZ: 60
    
    
    $ echo "EINGESTELLTE_FUELLZEIT_1: "${EINGESTELLTE_FUELLZEIT_1}
    EINGESTELLTE_FUELLZEIT_1: 840

    Das steht im p4d-Log:

    Code
    Feb  6 11:17:20 raspi82 p4d: <- (mqtt2p4d/command) [{ "command" : "parstore", "address" : ${ADRESSE_FUELLZEIT_1_DEZ}, "value" : "${EINGESTELLTE_FUELLZEIT_1}" }]
    Feb  6 11:17:20 raspi82 p4d: Error: Ignoring invalid json in [{ "command" : "parstore", "address" : ${ADRESSE_FUELLZEIT_1_DEZ}, "value" : "${EINGESTELLTE_FUELLZEIT_1}" }]
    Feb  6 11:17:20 raspi82 p4d: Error decoding json: invalid token near '$' (<string>, line 1 column 39, position 39)


    EDIT:


    Wenn ich die Werte von Adresse und Value als Zahl angebe, dann funktioniert es.


    mosquitto_pub -t mqtt2p4d/command -p 1883 -m '{ "command" : "parstore", "address" : 60, "value" : "840" }'


    Das steht im p4d-Log:

    Code
    Feb  6 11:29:31 raspi82 p4d: <- (mqtt2p4d/command) [{ "command" : "parstore", "address" : 60, "value" : "840" }]
    Feb  6 11:29:31 raspi82 p4d: Perform MQTT command 'parstore' for address 60 with value '840'
    Feb  6 11:29:31 raspi82 p4d: Storing value '840' for parameter at address 0x3c
    Feb  6 11:29:31 raspi82 p4d: Stored parameter

    Fröling Pelletskessel PE1 25 kW, Fröling Hygiene-Solarschichtspeicher H3 850, 4x Buderus Flachkollektor SKN4.0-w


    fraenk for friends Code: MATF103

    Einmal editiert, zuletzt von meute ()

  • ich habe ein Update auf 0.6.20 durchgeführt. Nun lässt ich das WebIf nicht mehr starten

    Hallo Horchi,


    ich schaffe es nach wie vor nicht, auf v0.6.22 zu aktualisieren. Es liegt m.E. am Datenbankzugriff vom Raspi auf meine MariaDB 10 (10.3.21) auf dem NAS.


    Hier meine Vermutungen, meine Tätigkeiten:

    • Der MariaDB-Server verlangt Mindestanforderungen an Passwort (10 Zeichen, Groß-/Kleinschreibung, Sonderzeichen). Ich weiß nicht, mit welcher Version das eingeführt wurde, kann aber nicht lange her sein. Auch darf das Root-Kennwort scheinbar nicht leer sein.
    • Root-Kennwort und p4-Kennwort (p4@%) habe ich an die Mindesanforderung angepasst.
    • Ein Python-Anmeldetest-Script an die Maria-DB funktioniert.
    • Befehl "mysql -u p4 -D p4 -h 192.168.xxx.xxx -p" -> "show tables;" geht auch.
    • Der Befehl "p4db" endet mit "Access denied for user 'p4@raspi4' ... "
    • Alle Versuche, p4d zu aktualisieren, enden mit: "Error 1819: Your password does not satisfy the current policy requirements" (Siehe Anhang)
      • sudo bash /tmp/install-deb
      • sudo apt install /tmp/p4d-latest.deb
      • sudo make install

    Kann es sein, dass die Kennwort-Policy ein Update verhindern? Ich verwende z.B. nun ein Kennwort mit 10 Zeichen. Leider erkenne ich bei der Ausführung deiner Skripte nicht, wer sich an die DB anmeldet (root@raspi4, p4@raspi4) und ob sie sich bei der Server- oder lokalen Datenbank anmelden wollen. Syslog und p4d-Log helfen mir auch nicht weiter.


    Wie lang darf das p4-Kennwort sein, wenn in der Tabelle "Users" für den md5-Wert 40 Zeichen vorgesehen sind?


  • Bei mir hat es leider nicht funktioniert. :(
    mosquitto_pub -t mqtt2p4d/command -p 1883 -m '{ "command" : "parstore", "address" : ${ADRESSE_FUELLZEIT_1_DEZ}, "value" : "${EINGESTELLTE_FUELLZEIT_1}" }'


    Vermutlich, weil ich die Adresse und den Value als Variable übergebe.
    Wie lautet die mosquitto_pub-Syntax mit Variablen?


    Hier die Lösung, wenn bei mosquitto_pub ... die Message Variablen enthält, weil die Variablen sonst nicht aufgelöst werden.


    Erklärt ist die Ursache hier:
    https://www.höllrigl.at/2015/01/die-bash-austricksen/


    EDIT am 07.02.2021 um 12:05 Uhr:

    Fröling Pelletskessel PE1 25 kW, Fröling Hygiene-Solarschichtspeicher H3 850, 4x Buderus Flachkollektor SKN4.0-w


    fraenk for friends Code: MATF103

    2 Mal editiert, zuletzt von meute ()

  • Kann es sein, dass die Kennwort-Policy ein Update verhindern? Ich verwende z.B. nun ein Kennwort mit 10 Zeichen. Leider erkenne ich bei der Ausführung deiner Skripte nicht, wer sich an die DB anmeldet (root@raspi4, p4@raspi4) und ob sie sich bei der Server- oder lokalen Datenbank anmelden wollen. Syslog und p4d-Log helfen mir auch nicht weiter.


    Wie lang darf das p4-Kennwort sein, wenn in der Tabelle "Users" für den md5-Wert 40 Zeichen vorgesehen sind?

    Die Tabelle Users hat nicht nit der Anmeldung bei der Datenbank zu tun - wi könnte sie wenn man angemeldet sein muss um auf die Tabelle zugreifen zu können ;).
    Die Anmeldedaten der DB Users welcher vom p4d verwendet wird stehen in /etc/p4d/p4d.conf, die hat du angepasst?
    Die Skripte sind noch 'dumm' und gehen vom Default aus, das muss ich mal erweitern. Aber die sind bei dir im Moment nicht Kriegsentscheidend um den p4d zum laufen zu bekommen.
    So wie den log Ausschnitt oben aussieht läuft der p4d und kann sich auch bei der DB anmelden? Nur dein DB Server scheint Probleme mit dem anlegen eines Indizes zu haben? Ich könnte die Meldung ja mal googeln, aber ich Logs in Form von Screenshots bedeuten das man sie abtippen müsste ;)

    Seit Oktober 2009:
    Fröling P4 mit 1000l Pufferspeicher

  • Hier die Lösung, wenn bei mosquitto_pub ... die Message Variablen enthält, weil die Variablen sonst nicht aufgelöst werden.


    Erklärt ist die Ursache hier:
    https://www.höllrigl.at/2015/01/die-bash-austricksen/


    Was versuchst du denn zu erreichen?
    In meinem Python-Script das ich sowohl hier als auch im Fröling-Forum gepostet habe kannst du sehen wie es - zumindest in python - funktioniert.
    Was nutzt du denn?

  • Was versuchst du denn zu erreichen?In meinem Python-Script das ich sowohl hier als auch im Fröling-Forum gepostet habe kannst du sehen wie es - zumindest in python - funktioniert.
    Was nutzt du denn?

    Vermutlich das gleiche wie Du.
    Ich habe ein bash-Skript geschrieben (Python kenne ich nicht), um die Uhrzeit des Parameter "Start der x. Pelletsbefüllung" zu verschieben.
    Das Skript läuft minütlich und verschiebt den Parameter "Start der x. Pelletsbefüllung" um X Minuten (ich habe mal 15 Min. eingestellt).
    Das Verschieben wird ausgeführt, wenn zum Zeitpunkt der Prüfung der Kessel NICHT im Status "19 - Betriebsbereit" ist.
    Es wird so lange verschoben, bis der Status wieder "19 - Betriebsbereit" ist.
    Nach der Pelletsfüllung, wenn Uhrzeit Heizung größer als Uhrzeit des Parameter "Start der x. Pelletsbefüllung" ist, wird wieder die ursprüngliche Uhrzeit beim Parameter "Start der x. Pelletsbefüllung" eingetragen.


    Heute ist der erste Live-Test.


    P.S. Ich habe meinen Quelcode noch mal überarbeitet.

    Fröling Pelletskessel PE1 25 kW, Fröling Hygiene-Solarschichtspeicher H3 850, 4x Buderus Flachkollektor SKN4.0-w


    fraenk for friends Code: MATF103

  • Hallo,


    ich hab jetzt p4d zu laufen gebracht und läuft sogar über einen virtuelen COM-Port (tcp).
    Die Sensordaten bekomme ich ohne Probleme herein, jedoch steht bei mir unter Service Menü nichts außer "Zeiten aktualisieren", was ich mal gemacht habe, aber sich nichts ändert.
    Und eine Frage zum Dasboard habe ich, da steht "22:15:48 Übergangsbetrieb Heizen", was bedeutet die Uhrzeit? Denn im zweiten Feld steht "Datum Uhrzeit der Heizung: Sonntag, 07. Feb. 2021 21:16:48" ja die Uhrzeit der Heizung. Sagt die erste Uhrzeit, wann der Heizvorgang zu Ende ist?


    Mfg,
    Tropaion

  • 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 |

  • such mal nach ser2net.
    auf dem Server kannst du sowas einstellen:
    7000:raw:600:/dev/ttyUSB0:57600 8DATABITS NONE 1STOPBIT remctl


    auf dem Client:
    socat pty,link=/dev/ttyVirtSerial0 tcp:nuc:7000


    dann hast du auf dem Client unter /dev/ttyVirtSerial0 das serielle Interface dev/ttyUSB0 des Servers


    /EDIT
    Baud, hostname, etc. noch anpassen, ist nur ein Beispiel für den Syntax.

    Seit Oktober 2009:
    Fröling P4 mit 1000l Pufferspeicher

  • Hallo Meute,


    du musst nicht wissen was Python ist, es reicht einfach das Script herunterzuladen und per cron zu aktivieren.
    Habe hier beschrieben was man machen muss.
    Du hast recht, genau dasselbe habe ich auch erreichen wollen bzw. erreicht.
    Zusätzlich wird noch dafür gesorgt, dass der Behälter gefüllt wird, sobald er unter einen bestimmten Schwellwert fällt.


    Viel Erfolg trotzdem ;)

  • 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.

    Eig. ganz einfache und günstige Lösung, habe mir in China denn Elfin EE-10 Konverter gekauft, welcher für 13€ wirklich überraschend qualitativ ist (sehr gute Web-UI).
    Dann habe ich in systemd einen socat-Service eingerichtet, welcher beim Boot eine TCP-Verbindung aufbaut und einen virtuellen COM-Port erstellt.

  • du musst nicht wissen was Python ist, es reicht einfach das Script herunterzuladen und per cron zu aktivieren.Habe hier beschrieben was man machen muss.
    Du hast recht, genau dasselbe habe ich auch erreichen wollen bzw. erreicht.
    Zusätzlich wird noch dafür gesorgt, dass der Behälter gefüllt wird, sobald er unter einen bestimmten Schwellwert fällt.


    Viel Erfolg trotzdem ;)

    Ich hatte das schon gelesen.
    Aber zum dem Zeipunkt hatte ich selbst schon viel im Skript fertig.
    Was mir bei Deiner Lösung nicht so gefällt ist, dass er damit auch in der Nacht saugen kann. Zumindest habe ich das so verstanden.
    Mein Skript verschiebt die eingestellten Austragungszeiten solange, bis der Kessel wieder Betriebsbereit ist.
    Danach wird gefüllt.
    Danach wird wieder auf die eingestellten Austragungszeiten zurückgestellt.


    Mein Skript läuft.
    Gestern beim ersten Versuch hat das zurückstellen der eingestellten Austragungszeiten nicht geklappt, weil ich einen Syntaxfehler in der if-Bedingung hatte.
    Mal sehen, ob das nun behoben wurde.


    EDIT:
    Das Zurückstellen der eingestellten Austragungszeiten klappt nun auch. :thumbup:

    Fröling Pelletskessel PE1 25 kW, Fröling Hygiene-Solarschichtspeicher H3 850, 4x Buderus Flachkollektor SKN4.0-w


    fraenk for friends Code: MATF103

    Einmal editiert, zuletzt von meute ()

  • Ja das stimmt, theoretisch könnte er da auch nachts saugen wenn der Behälter da leer wird.
    Verschieben und zurücksetzen hab ich allerdings auch eingebaut, damit kannst dann eine Füllung spät genug einstellen sodass es über die Nacht reicht.
    Eine Verhinderung einer Nachfüllung könnte ich allerdings noch einbauen, das stimmt.

  • 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.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!