Ankündigung
Einklappen
Keine Ankündigung bisher.
Plugin Pelletkessel
Einklappen
X
-
dafür ist die Extention zu teuer, und der KNX-Teil wird nicht benötigt. Ein normaler USB-Busmaster für 20€ ist hier besser geeignet.Zitat von 2ndsky Beitrag anzeigenNur als Info an den Fragesteller: diese können ebenfalls an den PI mittels ROT Extension angeschlossen werden... ein Wiregate ist dafür also nicht notwendig.
Bis bald
Marcus
Einen Kommentar schreiben:
-
Ich glaube, Saschas Config ist ähnlich.
Rücklauf kommt nicht aus dem ETA, ist aber mal ganz nett, um zu sehen, was an Wärme so weggeht.
Der ETA ist zwar schon toll, die Steuerung hat aber noch Potential
Du kannst den knxd auch parallel auf dem sh.py Image laufen lassen. Das ist ne gute Idee.
Das Plugin wird eher einfach gestrickt. Man gibt dann im Item immer die CAN ID mit an, da spare ich mir das ganze Bevorraten im Plugin.
Gruß
Einen Kommentar schreiben:
-
Hui, danke schonmal für die vielen guten Antworten.
Die zusätzliche Ausstattung mit 1-Wire Sensoren liegt erstmal noch in weiterer Zukunft, ist jedoch gut, wenn man das ganze doch noch erweitern möchte. Soweit ich das bisher beim PU Kessel gesehen habe, hat dieser bereits viele Sensoren (für den Puffer 4: WW, oben, unten, unten Solar). Vorlauf / Rücklauf sollte meines Erachtens auch vorhanden sein.
Jedenfalls werde ich mir da mal den Raspberry Pi besorgen und ein wenig rumspielen. Die Information mit dem knxd ist denke ich auch ganz hilfreich, jedoch versuche ich es erstmal mit dem SH-Image was hier im Board angeboten wird, um später nicht das System wechseln zu müssen.
Falls ich mit den URI - Zuordnungen vom PU weiterhelfen kann, werde ich dies gerne tun. Verbaut ist bei uns folgendes:
PU15 Kessel
HK1
HK2 - FBH
Puffer mit Warmwasser
Solar
Leider bin ich nicht zu oft bei meinen Eltern, so dass eine Auskunft auch mal etwas länger dauern kann.
Vielen Dank schonmal für eure Infos und ich hoffe auf ein tolles Plugin :-)
MfG
Dirk
Einen Kommentar schreiben:
-
Und noch was ... fürs erste ... bis das Plugin fertig ist tut es auch der knxd mit dem WireGate-Plugin: Knxd - Open Automation
Der läuft auch auf "jeder" Plattform und hier auf dem Pi parallel zu smarthome. Einzig ein "virtueller KNX-Bus" in Form vom eibd ist nötig.
Einen Kommentar schreiben:
-
Nur als Info an den Fragesteller: diese können ebenfalls an den PI mittels ROT Extension angeschlossen werden... ein Wiregate ist dafür also nicht notwendig.Zitat von greentux Beitrag anzeigenPS: Ein paar 1Wire Sensoren wären trotzdem nicht schlecht, das Du dann noch an den Vorlauf-/Rücklauf/Zirkulation/Warmwasser jeweils einen ranbauen kannst. Auch den Speicher oben/unten habe ich bestückt. Einiges gibt es auch in der ETA, aber nicht alles.
Einen Kommentar schreiben:
-
Mir sei der Fullquote gestattet. Wir kommen gerade aus dem WG Bereich herüber. Fürs WG hatte ich damals mit Sascha ein Plugin geschrieben, was auch ausgezeichnet tut. Sowohl lesend, als auch schreibend. Ich habe also sowohl die Diagramme (lesend), kann aber auch den Kessel ein- und ausschalten (schreibend).Hallo,
ich weiß nicht, ob das jetzt hier in dieses Thema rein passt, da es jedoch so ziemlich der einzige Thread ist, welcher sich explizit mit der ETA PU beschäftigt will ich mein Anliegen mal hier äußern.
Seit kurzem besitzen wir eine PU15 der Firma ETA. Ansonsten ist nichts an Hausautomatisierung vorhanden oder geplant (Haus der Eltern). Jedoch möchte ich mir gerne etwas günstiges aufbauen, was aktuell zum Loggen der Heizungsdaten genutzt werden kann. Meine erste Idee ist die, eine Raspberry Pi anzuschaffen und diese zum zyklischen Auslesen und zum Visualisieren zu nutzen. Jedoch bin ich bisher bei meiner Recherche nicht so richtig schlau geworden, was ich dazu alles benötige, ob ein EIBD/KNX notwendig ist, ob Smarthome (auf Pi) bzw. Wiregate / Communitygate overkill ist etc.
Genau hier setzt jetzt meine eigentliche Frage an:
Was benötige ich, um die Heizungsdaten auszulesen und eine per html zugängliche Visualisierung (z.B. CometVISU) zu realisieren, wobei das ganze nicht zu komplex werden soll. Eventuell ist auch später mal etwas Logik geplant (z.B. Wetterdaten aquierieren und bei schönem Wetter den Kessel ausschalten um nur Solar zu nutzen).
Da ich noch keine Raspberry pi besitze, konnte ich noch nicht rumprobieren. Ansonsten ist als Technik ein TP-LINK MR3420 v2 vorhanden, welcher aktuell auf originaler Firmware läuft (und wohl auch darauf bleiben soll, da die Zuverlässigkeit mit openWRT wahrscheinlich nicht so toll ist?!?).
Über Informationen würde ich mich freuen.
Da es auch für mich einige Gründe gibt, vom WG wegzuwechseln, bin ich hier bei SH.py gelandet. Ein neues Plugin ist in Arbeit, aber das dauert noch etwas.
Generell willst Du ja nur lesend darauf zugreifen und dann Diagramme befüllen. Das sollten wir recht schnell hinbekommen. KNX etc. brauchste alles nicht. SH.py ist auch nicht darauf fokussiert. KNX ist ein Konnektor, wie jeder andere auch (1wire, CAN, DMX).
Ich empfehle Dir also, Dir einen Rasperry zu kaufen, das Image hier draufzutun und damit ein wenig rumzuspielen. In der Zwischenzeit mach ich mich mal an das Plugin...
PS: Ein paar 1Wire Sensoren wären trotzdem nicht schlecht, das Du dann noch an den Vorlauf-/Rücklauf/Zirkulation/Warmwasser jeweils einen ranbauen kannst. Auch den Speicher oben/unten habe ich bestückt. Einiges gibt es auch in der ETA, aber nicht alles.
Einen Kommentar schreiben:
-
Nein, dafür müsste man ein separate Lokig oder Plugin schreiben oder das KNX Plugin erweitern.Zitat von greentux Beitrag anzeigen- kann ich im Item dafür sorgen, das die Werte regelmässig gesendet werden?
Nein, Dein Plugin aktualisiert in einem Rutsch 40 Items. Wenn diese Items auch ein 'knx_send' haben, wird der Wert (wenn er sich geändert hat) auf den Bus gesendet.Zitat von greentux Beitrag anzeigenDa die Lesewerte auch immer als ein Set (etwa 40 Werte) gelesen werden, wäre es gut, wenn die dann auch in einem Rutsch rauskämen. Wenn es jetzt 40 Items gäbe und jedes wieder beim Plugin nachfragt, muss ich das im Plugin anders gestalten. Dann muss da eine Art Cache rein. Beim WG lese ich halt alle 5 Minuten alle Werte und schreibe die auf den Bus.
Alternativ könnte man 'enforce_updates' bei einem Item setzen, dann wird der Vergleich ignoriert und der Wert an jedes Plugin - das sich beim Item für Updates registriert hat - gesendet.
Das Item ist der 'Cache'! Aus meiner Sicht muss die Werte nicht zyklisch senden, wenn nicht ein RTR oder ähnliches den Wert zyklisch erwartet.
Wozu brauchst Du das? Für die Visu? Dann würde es auch langen die Werte bei Änderung auf den Bus zu schicken, da der eibd ja die alten Werte zusätzlich cached. Das KNX Plugin kann ja bei Bedarf auch auf KNX READs antworten.
Prinzipiell Ja, 1 Item = 1 Wert. Man könnte aber auch mehrere Werte in ein Item schreiben, das führt hier jetzt wahrscheinlich zu weit.Zitat von greentux Beitrag anzeigen- 1 Item = 1 Wert ?
Ich sehe da 4 Items. Wobei das Schlafzimmer-Item nur zu Struktur dient und keinen Wert hat.Zitat von greentux Beitrag anzeigenAlso Schlafzimmer mit drei Sensoren sind 2 Items?
Code:[Schlafzimmer] [[Sensor1]] type = num [[Sensor2]] type = num [[Sensor3]] type = numIn den Items. (siehe meine Fantasie-Config für Dein Plugin)Zitat von greentux Beitrag anzeigen- Wo lege ich am besten eine Config ab (primär GA, CAN, DPT Einträge)? Im Plugin selbst wärs unschön.
Im Plugin.Zitat von greentux Beitrag anzeigen- Wo sollten administrative Aufgaben passieren (also anlegen des CAN-ID Sets falls noch nicht angelegt weil Heizung Rebootet
Bis bald
Marcus
Einen Kommentar schreiben:
-
Ja, soweit verständlich. Das 1Wire ist ja ein guter Vergleich.
Dann zwei Fragen (ich denke immer a la WG
- kann ich im Item dafür sorgen, das die Werte regelmässig gesendet werden? (Für die Uhrzeit ist das ja schon vorgesehen). Da die Lesewerte auch immer als ein Set (etwa 40 Werte) gelesen werden, wäre es gut, wenn die dann auch in einem Rutsch rauskämen. Wenn es jetzt 40 Items gäbe und jedes wieder beim Plugin nachfragt, muss ich das im Plugin anders gestalten. Dann muss da eine Art Cache rein. Beim WG lese ich halt alle 5 Minuten alle Werte und schreibe die auf den Bus.
- 1 Item = 1 Wert ? Also Schlafzimmer mit drei Sensoren sind 2 Items?
Zwei strukturelle Fragen:
- Wo lege ich am besten eine Config ab (primär GA, CAN, DPT Einträge)? Im Plugin selbst wärs unschön.
- Wo sollten administrative Aufgaben passieren (also anlegen des CAN-ID Sets falls noch nicht angelegt weil Heizung Rebootet
Einen Kommentar schreiben:
-
Klasse. Kannst Du mir den Code mal per Mail schicken? Dann kann ich Ihn mir am Sonntag Abend mal ansehen.Zitat von greentux Beitrag anzeigenIch habe jetzt mal den Python Code soweit, das er sich mit der ETA verbindet und Daten holt bzw Daten abliefern kann.
Daraus könnte man nun ein Plugin machen, was alle 300s läuft und Daten holt.
Ja, die Plugins kümmern sich immer nur um ihren Bus/Gerät.Zitat von greentux Beitrag anzeigenUm diese dann auf den KNX zu senden sollte man aus dem ETA Plugin direkt mittels sh.knx.groupwrite auf den Bus schreiben?
Die gleiche Frage stellte sich mir, wie man 1Wire Werte auf den KNX bekommt. In einer Logik oder direkt in einem 1wire Plugin?
Ich verstehe glaube ich vl. die Architektur noch nicht so ganz. Kümmern sich die Plugins nur jeder um ihren "Bus" / "Gerät" etc. und der Austausch dazwischen passiert immer via Logik oder wie soll es sein?
Verknüpft werden sie primär über Items. Über Logiken geht auch, fällt mir aber momentan kein Use Case ein.
Für 1-Wire => KNX:
Ode für Dein Plugin:Code:[temperature] type = num ow_id = 28.FE4D7207777 ow_sensor = temperature knx_dpt = 9 knx_send = 1/1/8
Dein eta Plugin setzt auf eta.kessel.temp auf 21. Das KNX Plugin reagiert auf die Wertveränderung und sendet den Wert 21 als dpa 9 kodiert an die 1/1/3.Code:[eta] [[kessel]] [[[temp]]] type = num knx_send = 1/1/3 knx_listen = 1/1/4 knx_dpt = 9 eta_can = 112/10021/0/0/12001 eta_send = yes eta_eval = value * Pi # evtl. falls eine Bereinigung der ETA Eingangswerte notwendig ist.
Dazu müssen sich die Plugins bei dem Items registrieren wenn sie über Änderungen informiert werden wollen. (Das geschieht in der parse_item Methode).
Andersrum könnte man für Werte die man setzen möchte, z.B. die gewünschte Vorlauftemperatur, einen Wert über das KNX-Plugin ändern und dein eta Plugin würde auf die Änderung reagieren.
Als z.B. den Wert 23 als dpt 9 kodiert an die 1/1/4 schicken und dein Plugin schickt den Wert dann an die 112/10021/0/0/12001 richtig kodiert.
Verständlich?
Bis bald
Marcus
Einen Kommentar schreiben:
-
Ich habe jetzt mal den Python Code soweit, das er sich mit der ETA verbindet und Daten holt bzw Daten abliefern kann.
Daraus könnte man nun ein Plugin machen, was alle 300s läuft und Daten holt. Um diese dann auf den KNX zu senden sollte man aus dem ETA Plugin direkt mittels sh.knx.groupwrite auf den Bus schreiben?
Die gleiche Frage stellte sich mir, wie man 1Wire Werte auf den KNX bekommt. In einer Logik oder direkt in einem 1wire Plugin?
Ich verstehe glaube ich vl. die Architektur noch nicht so ganz. Kümmern sich die Plugins nur jeder um ihren "Bus" / "Gerät" etc. und der Austausch dazwischen passiert immer via Logik oder wie soll es sein?
Fangen wir mal mit dem einfachsten Fall an.
10 Werte vom Kessel auf den KNX bekommen.
Ich habe GA, CAN-ID und DPT in einer Liste im Plugin (später mal in der plugin.conf) und kann diese nun lesen. Wo sollen die Daten dann hin?
Einen Kommentar schreiben:
-
Hi,
ich würde alles im Plugin machen. Das Plugin holt sich zyklisch die XML Files, parst diese, berechnet den Wert und setzt die Items.
Kopier Dir mal plugins/sample/__init__.py (das kannst Du auch direkt ohne SmartHome.py ausführen, geht zum entwickeln schneller) und fange an das Plugin zu entwickeln.
1. Schritt Kommunikation = Hol Dir ein XML File als String. Für den Anfang kannst Du ja nur eine CAN_ID auslesen und das ganze in der run methode aufrufen.
Dann poste den Code und ich gebe Dir Feedback
Wollen wir es so machen?
Bis bald
Marcus
Einen Kommentar schreiben:
-
zu 1.
Das wäre ja das, was bisher bei Dir unter /plugins liegt. Also beispielweise würde ich den udp Sender/Empfäger nehmen, um dann einen http/xml Sender/Empfänger zu haben.
Code:GET /user/var/112/10021/0/0/12112 HTTP/1.1
Das Ergebnis (1802) ist nun mit scaleFactor (1) zu multiplizieren. Anschliessend ist advTextOffset (1802) zu subtrahieren (=0). Ggf. hat man die unit übergeben. Parallel gibs hier auch einen Text ("off"), das sind also im Grunde zwei GAs.Code:HTTP Response HTTP/1.1 200 OK Content-Encoding: utf-8 Content-Type: application/xml <?xml version="1.0" encoding="utf-8"?> <eta version="1.0" xmlns="http://www.eta.co.at/rest/v1"> <value uri="/user/var/112/10021/0/0/12112" strValue="Off" unit="" decPlaces="0" scaleFactor="1" advTextOffset="1802">1802</value> </eta>
Der Teil oben ist vermutlich dann "plugin", das auswerten und knx anbinden ist normale Logik. So war auch mein Vorschlag...
Einen Kommentar schreiben:
-
Hi,
eine separate Logik sehe ich momentan nicht.
Was musst Du den umrechnen?
Das ganze KNX Zeug hat nichts mit dem ETA Plugin zu tun. Du musst dem entsprechenden Item nur die 'echten' Werte mitteilen und ein paar Angaben für das KNX Plugin machen.
Aber so richtig verstehe ich das Problem bzw. den Datenfluss nicht.Code:[eta] [[kessel]] [[[temp]]] type = num knx_send = 1/1/3 knx_listen = 1/1/4 knx_dpt = 9 eta_can = 112/10021/0/0/12001 eta_send = yes eta_eval = value * Pi # evtl. falls eine Bereinigung der ETA Eingangswerte notwendig ist.
1. Du baust ein paar Funktionen um mit der ETA per http zu kommunizieren zu können (GET, POST, ...)
2. Du parst das XML (zyklisch) und setzt die items.
3. Bei Änderungen der items, die eta_send gesetzt haben, sendest Du das ein POST Update an die ETA.
Die Kommunikation und XML parsen kannst Du auch erst mal so in ein Python Script hacken. Die Integration als Plugin wird dann sehr einfach.
Achtung bei urllib2 gibt es ein memleak. In lib/tools.py habe eine Funktion definiert die das umgeht. Es sollte Dir als Vorlage für Deine Kommunikationsfunktionen dienen.
Bis bald
Marcus
Einen Kommentar schreiben:
-
So, ich habe mal etwas nachgedacht und mir die Plugins im sh.py angeschaut.
Das ganze WG-Pelletplugin ist vermutlich ein Mischung aus Logik und Plugin.
Was brauchts generell:
- eine Möglichkeit, um den Webservice des Kessels abzufragen. Dazu legt man eine Gruppe von CAN-Knoten an. Diese können dann mit einem Aufruf abgefragt werden. Jede CAN ID liefert dann Ergebnisse, die interpretiert werden müssen. Generell kann man Values und Texte unterscheiden.
- Value Werte können auch geschrieben werden. Dies kann einzeln pro CAN-Knoten passieren.
Aus meiner Sicht wäre das eine Mischung aus Plugin (Webservice/XML lesen/schreiben) und Logik (Umrechnung Ergebnis XML in "Werte" mit DPTs)
Im Perl Plugin haben wir am Anfang eine Menge definiert. u.a.
CAN-ID, GA, DPT
Das Ganze jeweils für Value-read, Value-write und String-read CAN-IDs.
Marcus, vl. kannst Du mir eine Idee geben, wie das einzubauen wäre. Das eigentliche Einbauen würde ich dann selber mal probieren.
Grüße
Einen Kommentar schreiben:


Einen Kommentar schreiben: