Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
kann. Ich weiss, ich könnte bzw. sollte die Szenen in den Autoren hinterlegen aber ich hoffe, dass ich mir das umprogrammieren sparen kann und ihr mir eine andere Lösung mitteilen könnt.
Ich beobachte dieses Forum seit geraumer Zeit. Eure Informationen waren mir sehr hilfreich. Die Zusammenhänge zwischen Telegramm-Indizes und Funktionalität sind in der Elster-Tabelle beschrieben. Ich selbst verwende den Raspberry Pi mit CAN-Schnittstelle. Der CAN232 von Lawicel kann mit meiner Software auch verwendet werden (ist noch in der Testphase). Das Protokoll sieht gleich wie das vom "ttyUSB" aus. Sind sie identisch?
Ich beobachte dieses Forum seit geraumer Zeit. Eure Informationen waren mir sehr hilfreich. Die Zusammenhänge zwischen Telegramm-Indizes und Funktionalität sind in der Elster-Tabelle beschrieben. Ich selbst verwende den Raspberry Pi mit CAN-Schnittstelle. Der CAN232 von Lawicel kann mit meiner Software auch verwendet werden (ist noch in der Testphase). Das Protokoll sieht gleich wie das vom "ttyUSB" aus. Sind sie identisch?
das Projekt smarthome.pi (oder py) sieht schön aus. Leider lassen sich die beiden Programm-Bibliotheken C++ und Python schlecht miteinander verbinden.
Weisst Du das: Kann ein Python-Programm ein C++-Programm als Treiber (oder so ähnlich) einbinden?
Wenn es jedoch darum geht, zu ermitteln, wie die Werte via CAN-Bus gelesen und geschrieben werden können (vgl. Elster-Tabelle), dann sind es bei beiden Vorhaben dieselben Probleme. Das smarthome-Projekt ist riesig! Kannst Du mir zu dieser CAN-Bus-Anbindung die Stelle im Projekt zeigen?
Die Frage ist nun: Kannst Du irgend etwas von meinem Code brauchen? Hast Du eine Stiebel (oder ähnliche) Wärmepumpe und ein CAN-Interface zu Deinem Raspi?
Die Frage ist nun: Kannst Du irgend etwas von meinem Code brauchen? Hast Du eine Stiebel (oder ähnliche) Wärmepumpe und ein CAN-Interface zu Deinem Raspi?
Viele Grüsse
Jürg
Hallo Jürg,
vielen Dank für Deine Antwort.
Ja ich werde demnächst eine Stiebel Eltron WP haben (LWZ504) und es gibt im Forum noch ein paar Leute, die daran Interesse haben.
Ich betreibe meinen Pi momentan mit der ROT Extension; ein CAN-Interface habe ich nicht, könnte aber beschafft werden (weiß nur nicht, ob das zusätzlich zu der ROT geht oder ob ich einen separaten Pi. dafür brauche...).
Mein Problem ist, dass ich Ewigkeiten nicht mehr programmiert habe und auch nicht die Zeit, mich da wirklich einzuarbeiten um ein solches Plugin zu schreiben.
D.h. man kann die beiden parallel verwenden. Wie es mit der CPU-Auslastung steht, kann ich nicht beurteilen. Skripts und interpretierte Programmiersprachen sind Ressourcen-Fresser! Deshalb verwende ich C++. Ausserdem war es für mich wichtig, dass die WP und der Raspi galvanisch getrennt sind.
KNX verwende ich nicht. Ich wohne in einem alten Haus, da ist nichts automatisiert.
Ich denke, dass es für mich nicht allzu schwierig sein dürfte, ein Plugin für Python zu schreiben. Voraussetzung ist allerdings, dass jemand für mich die Parameter des Plugin definiert.
ich habe zu meiner CAN-Bus-Anbindung ein Import-Module für Python3 programmiert. Das Modul "elster" muss mit
>>>import elster
importiert werden. Danach stehen verschiedene Methoden zur Verfügung. Hier eine Bash-Kopie:
Python 3.2.3 (default, Mar 1 2013, 11:53:50)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import elster
>>> str(elster.getvalue("680 601 000a"))
'1034'
>>> str(elster.getstring("680 601 000a"))
"b'04.10.'"
>>> str(elster.gettype("000a"))
'9'
>>> str(elster.getname("000a"))
"b'DATUM'"
>>> str(elster.getstring("680 500 930"))
"b'90.076'"
>>> str(elster.getname("931"))
"b'WAERMEERTRAG_HEIZ_SUM_MWH'"
>>> str(elster.gettype("930"))
'5'
>>>
680 ist jeweils die CAN-Id des Senders. Die zweite Zahl (601 bzw. 500) ist die CAN-Id des Empfängers. 930 und 000b (alles hexadezimal) sind Elster-Indices.
Wenn Du an diesem Modul interessiert bist, lass es mich wissen.
Wenn Du an diesem Modul interessiert bist, lass es mich wissen.
Wie gehen wir weiter vor?
Viele Grüsse
Jürg
Hallo Jürg,
Interessse ist da. Du hast ja im Smarthome.py Forum eine mögliche Variante für die Vorgehensweise gepostet, würde gern mal sehen, ob wir da die eine Zusammenarbeit hinkriegen.
Bleibe am Ball, bin aber in nächster Zeit viel unterwegs, also nicht direktes Antworten soll kein Desinteresse signalisieren....
Vielen Dank für die großartige Arbeit, die du bereits gemacht hast!
Was ich bis jetzt noch nicht ganz verstanden habe, ist der Telegrammaufbau bzw. die ersten 16-Bit.
Wenn ich folgendes Telegramm habe:
A1 00FA 07A9 0000 bzw. 92 00FA 07A9 001D
dann ist mir noch nicht klar, was A1 00 (vom ersten Telegramm)bzw. 92 00 (vom zweiten Telegramm) bedeutet.
Es kommen auch Telegramme vor, welche mit A2 79 oder anderen Kombinationen beginnen. Ich habe bei meinen Mitschnitten bisher nicht eindeutig rausfinden können, was diese 16-Bit genau beschreiben. Es wäre mir sehr geholfen, wenn du dies etwas näher erklären könntest.
A1 00: bedeutet Anfrage (das ist das 2. Digit "1") an die CAN-ID 500. Die 500 setzt sich aus 8*(A0 & f0) + (00 & 0f) zusammen, d.h. das ertste Digit A0 mal 8 plus das 4. Digit 0. Demnach ist 61 02 eine Anfrage an die CAN-ID 302. Als Antwort auf A1 00 fa 07 49 (die beiden letzten Bytes kannst Du auch weglassen) erhältst Du: D2 00 fa 07 49 xxxx. Wobei xxxx der gewünschte Wert ist und das erste Digit "D" gibt über den Sender von A100 Auskunft. Das müsste sich dann um die CAN-ID des Senders 780 (8*d0) handeln. Das Zweite Digit von D2, also die "2", besagt, dass es sich um eine Antwort handelt, bzw. dass nach dem Elster-Index ein gültiger Wert steht.
92 00: bedeutet Änderung eines Wertes. Die CAN-ID ist hier 8*90 + 0, also 480. Auch hier nach "fa" kommt der Elster-Index und danach der zu setzende Wert. Hier gibt es kein Antwort-Telegramm.
Die Telegramme, bei welchen 79 an 2. Stelle steht, sind "broadcast" Telegramme, die in regelmässigen Zeitabständen abgesetzt werden.
An der 3. Stelle steht nicht notwendigerweise "fa" ("ERWEITERUNGSTELEGRAMM" siehe Elster-Tabelle). Wenn ein Elster-Index 2-stellig ist, also kleiner oder gleich ff ist, dann darf der Index dort direkt eingesetzt werden. Das Resultat erhält man dann im 4. und 5. Byte.
Jetzt ist mir das klar! Du hast mir wahnsinning viel damit geholfen.
Hatte mein Projekt (Umschalten der Betriebsmodis der Stiebel Eltron WP über KNX) schon in die Ecke gestellt, doch jetzt kommt da, dank dir, wieder Wind in die Segel!
Ich denke, es wäre eine gute Ergänzung auf deiner Seite juerg5524.ch/
für so begriffsstutzige Leute wie mich!
Ich hätte noch ein Frage an dich, welche du eventuell beantworten kannst:
Ich möchte gerne die Betriebsart meiner Wärmepumpe umschalten.
Folgendes Frame würde ich senden:
Sender: 0x680 --> x0 00 fa 01 00 00 02
Erklärung bzw. Frage:
x0 --> 1.ter Teil der recv. ID, x ist mir noch unbekannt (wer ist Empfänger 0x480, 0x500, ???)
00 --> 2.ter Teil der receiver ID
fa --> für ID's > 0xFF
01 00 --> Index 0x0100 laut ElsterTable für die Betriebsarten
00 02 --> Wert für den Automatik Betrieb
Kannst du mir sagen, ob das im Grundsatz richtig ist und was ich für x einsetzen muss, damit ich die korrekte receiver ID anspreche?
die Elster-Tabelle ist nicht absolut korrekt. Deshalb wird sie von mir auch immer wieder angepasst. In der neuesten "ElsterTable.inc" (can_progs.zip) ist der Index für den "PROGRAMMSCHALTER" 0x0112. Das Format dazu ist "et_little_endian", soll heissen, der Wert für Automatikbetrieb ist 0x0200. Auf meiner WP ist 180 der Empfänger.
680: 32 00 fa 01 12 02 00
Die "2" in 32 steht für Schreiben.
Wie sieht Deine Hardware/Software Konfiguration aus? Ich könnte Dir vielleicht helfen, dass Du zu einem Dump Deiner WP kommst. Damit könntest Du, mit der ComfortSoft die Telegramme in der Simulation Deiner WP ausprobieren, bevor es echt auf die WP geht.
Nun meine Hardware/Softwarekonfiguration sieht folgendermaßen aus:
Hardware Infineon C167CR LM mit selbst gebastelter SW.
Ich habe über einen längeren Zeitraum mit einem CAN Sniffer den Datenverkehr meiner WP mitgeloggt.
Erst mit deinen Hinweisen in diversen Foren, konnte ich die Daten einigermaßen sinnvoll auswerten.
Bis dato ist es mit meiner Bastelei möglich, alle Telegramme im Datenverkehr zu lesen und auf die serielle Schnittstelle als Klartext (anhand deiner ElsterTable) auszugeben. Dies erleichtert schon mal die Ausertung.
Als nächstes würde ich gerne den Betriebsmodus der Wärmepumpe umschalten, um mir den Gang in den Technikraum (Keller) zu ersparen.
Im Endausbau sollte dies dann über meinen Hausbus KNX funktionieren.
Für mich wäre es interessant zu wissen wofür die verschiedenen CAN ID's stehen.
z.B.: 0x680; 0x601; 0x500; 0x480; 0x180
Ich möchte vermeiden, dass ich ein Kommando an die falsche ID sende --> Folgen unbekannt!
Sofern du eine Idee dazu hast, wäre es toll, wenn du das kurz erläutern könntest.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar