Hallo konreas,
ich habe das Script mit Python 2 ausgeführt.
Du musst dir dafür mit sudo pip install paho-mqtt das entsprechende Paket herunterladen.
Die Fehlermeldung bedeutet nämlich dass das nicht gefunden werden kann.
Viele Grüße,
David
Hallo konreas,
ich habe das Script mit Python 2 ausgeführt.
Du musst dir dafür mit sudo pip install paho-mqtt das entsprechende Paket herunterladen.
Die Fehlermeldung bedeutet nämlich dass das nicht gefunden werden kann.
Viele Grüße,
David
Alles anzeigenIch 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.
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.
Alles anzeigenVermutlich 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.
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
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/
CodeAlles anzeigen# Variablen definieren ADRESSE_FUELLZEIT_1_DEZ="60" EINGESTELLTE_FUELLZEIT_1="840" # Message-Parameter in eigene Variable schreiben und Variablen mit 2x sed auflösen MOS_PUB_MESSAGE=$(echo '{ "command" : "parstore", "address" : ${ADRESSE_FUELLZEIT_1_DEZ}, "value" : "${EINGESTELLTE_FUELLZEIT_1}" }' | sed s/\${ADRESSE_FUELLZEIT_1_DEZ}/${ADRESSE_FUELLZEIT_1_DEZ}/g | sed s/\${EINGESTELLTE_FUELLZEIT_1}/${EINGESTELLTE_FUELLZEIT_1}/g) # mosquitto_pub ausführen mosquitto_pub -t mqtt2p4d/command -p 1883 -m "${MOS_PUB_MESSAGE}" # p4d-Log Feb 6 15:40:18 raspi p4d: <- (mqtt2p4d/command) [{ "command" : "parstore", "address" : 60, "value" : "840" }] Feb 6 15:40:18 raspi p4d: Perform MQTT command 'parstore' for address 60 with value '840' Feb 6 15:40:18 raspi p4d: Storing value '840' for parameter at address 0x3c Feb 6 15:40:18 raspi p4d: Stored parameter
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?
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
Hallo alle zusammen,
nachdem ich seit letztem Jahr einen PE1-Kessel verbaut habe ist mir in meinem ersten Winter aufgefallen, dass dieser gerne auch anfängt zu heizen, wenn der Pelletstand im Behälter der Heizung bei 2% liegt. Was natürlich dafür sorgt, dass nach kurzer Heizphase abgestellt, der Behälter gefüllt und anschließend wieder geheizt wird. In dieser Zeit fällt nicht nur die Puffertemperatur stark ab, es wird zusätzlich einiges an Strom für das doppelte Anheizen verbraucht. Lösungen gibt es hierfür nicht wirklich, das einzige was wirklich hilft ist, direkt nach jedem Heizen den Behälter zu füllen.
Da das Füllen allerdings recht laut ist und ich mich innerlich weigere, um die 70% des Behälters praktisch ungenutzt zu lassen, war das nicht wirklich eine Lösung.
Deshalb habe ich auf Basis von horchis p4d ein Python-Script geschrieben, das dieses Problem löst.
Es überprüft per MQTT den Status der Heizung, sowie den Pelletfüllstand. Daraufhin gibt es 2 Funktionen:
Hat man p4d in Benutzung muss nur ein MQTT-Broker und paho-mqtt installiert werden.
Alles weitere findet ihr im github-Repository.
Fragen/Anregungen immer gerne
Vielen Dank an horchi, der mir bei Fragen zur Seite stand!
Viele Grüße,
David
Dann scheint es wohl nicht zu gehen. Wahrscheinlich nimmt die Heizung den Befehl nicht entgegen über die Schnittstelle. Versuch mal ob sich an dem Wert was ändert wenn du manuell den Partymodus aktivierst (am Kessel).
Die 258 ist die Adresse 0x0102 umgerechnet in Dezimal, da die erwartete Adresse im JSON-String eine Nummer sein muss und die kein Hexadezimal versteht. (Siehe Beitrag von horchi
Achtung, nicht die 0x17 ändern!
Versuchs mal genau mit meinem Command. Der verweist auf den 2. Parameter der in deiner Ausgabe von weiter oben auch mit 0 gemeldet wird.
pi@raspberrypi:~ $ p4 menu | grep Partyschalter
1441) Address: 0x0017, parent: 0x0136, child: 0x0000; 'Partyschalter'
1443) Address: 0x0102, parent: 0x0136, child: 0x0000; 'Partyschalter'
Das wäre dann das Output
Was könnte ich alles Testen? @David92 ?
Hallo johination,
der erste Output ist ja die Adresse von oben, das wird der Wert mit der %-Angabe sein. Was auch immer das darstellen soll..
Was ich mal testen würde, sofern du mosquito installiert und p4d entsprechend eingestellt (hier) hast:
mosquitto_pub -t "mqtt2p4d/command" -m '{ "command" : "parstore", "address" : 258, "value" : "1" }'
Dadurch sollte der Partschalter auf 1 gesetzt werden.
Hallo johination,
denke wenn dann müsstest du den 2. Parameter (dort wo 0 steht) bearbeiten. Was passiert denn, wenn du dort was änderst?
Ansonsten mal mit sudo p4 menu | grep Party die Adresse rausfinden, die kannst du dann wiederum im MQTT-Command verwenden.
Meine Heizung hat diesen Parameter auch nicht, kanns deshalb leider auch nicht testen.
Hallo Jörg,
erneut danke für deinen Input! Das hat wirklich weitergeholfen!
Ich habe mich übers Wochenende dran gesetzt und ein Python-Script gebastelt, das folgende Funktionalitäten erfüllt:
Zusätzlich hab ich ein Reset-Script gebaut, das die Zeiten auf Standard-Zeiten zurücksetzt.
Die beiden Scripts werden per cron immer wieder aufgerufen (das Hauptscript alle 5 Minuten, der Reset jede Nacht um 5 nach 12)
Gefunden werden können beide hier: https://github.com/DavidWelsch/p4d_Addon_Scripts
Bei Fragen, Anregungen, usw. schreibt mir gern eine PN oder kontaktiert mich per github
Hallo Jörg,
am Freitag kam mein Raspi (Zero W) an, gestern hab ich mich mal dran gemacht deine Software zu installieren und was soll ich sagen? Es hat auf Anhieb alles funktioniert!
Jetzt würde ich gern an die Umsetzung meiner Idee (Uhrzeit der Pelletbefüllung dynmisch ändern) gehen.
Da hätte ich eine Frage dazu:
Wenn ich sudo p4 setp -a xxx -v xxx ausführe muss ich immer bestätigen dass ich sicher bin. Gibt es ein weiteres Flag mit dem ich das unterdrücken kann?
Oder denkst du es macht mehr Sinn dass meine Anwendung direkt in die Datenbank schreibt?
Danke und einen schönen Sonntag!
David
Ich kenne keine Möglichkeit das über die COM1 zu triggern, ggf den richtigen Ausgang setzen, was aber m.E. nicht unkritisch ist.
Hm, das ist schade. Was meinst du mit Ausgang setzen? Kann man mit deinem Tool beliebige Digitale Ausgänge schalten?
Dann würde ich mich mal ran wagen.
Wie ich mitbekommen hab kann man ja den Betriebsmodus wechseln, dann könnte man ja theoretisch einfach abfragen ob der Kessel heizt, wenn nicht und der Füllstand unter x% ist den Betriebsmodus auf „Aus“, den entsprechenden Ausgang setzen, warten bis voll, Ausgang wieder zurücksetzen, Betriebsmodus auf „Ein“, fertig.
Allerdings müsste man dann testen ob man mitbekommt wann der Pelletbehälter voll ist, sonst wäre es natürlich doof..
Edit: Was mir grade noch kommt:
Kann man den Parameter zur 1./2. Befüllzeit anpassen? Dann könnte man immer beim Übergang zu Betriebsbereit den Füllstand checken und dann die Befüllzeit entsprechend auf 20 Minuten in der Zukunft setzen.
Den Behälter jedesmal nach der Pufferladung füllen zu lassen würde bei mir theoretisch funktionieren, aber das finde ich übertrieben. Brauche pro Ladung nur etwa 30%. Könnte ich zur Not aber machen, da hast du recht pellet-heizer.
Hallo an alle, vor allem hallo Jörg.
Lese schon länger mit und habe jetzt entschieden mir einen Pi zu bestellen und das Ganze mal auszuprobieren!
Habe nur eine Frage, passenderweise zum Setzen der Parameter:
Ist es möglich die manuelle Befüllung des Pelletbehälters zu triggern?
Mein Kessel springt nämlich in letzter Zeit immer bei unter 10% Füllstand an (zum Teil auch bei 0%..) und heizt dann für ein paar Minuten bis er wieder aus geht...
Vielen Dank schon mal und riesen Respekt vor der Arbeit die da drin steckt, sowie den Support!!