FHEM Modul (70_HPSU.pm) ROTEX HPSU compact <--> ELM327

Begonnen von ahermann86, 19 Dezember 2019, 21:14:24

Vorheriges Thema - Nächstes Thema

ahermann86

Hallo zusammen,

ich besitze eine ROTEX HPSU compact Wärmepumpe. Da ich mit dem "ROTEX RoCon HP" Regler und den Log-/Steuermöglichkeiten nicht zufrieden war, habe ich nach einer Möglichkeit gesucht, die Anlage an FHEM anzubinden. Es gibt schon ein paar Foreneinträge sowie Github Projekte.
Ich habe bisher das Projekt https://github.com/Spanni26/pyHPSU eingesetzt. Leider ist das ein separates Script bzw. ein Daemon und man muss das pollen immer mit z.B. einem AT command -> Systembefehl über FHEM aufrufen. Das ganze ist außerdem nicht sehr performant und scheint auch noch nicht ganz fertig entwickelt zu sein (keine Verbindung zum Regler -> Fehler, aktiviertes Menü an der HPSU compact sperrt auslesen - parsen der Messages, eigenständiges Polling hängt sich auf...)
Trotzdem ist das Projekt die Grundlage meines Moduls. Schon die Idee, einen ELM327 zu nehmen und das Decodieren der CAN Nachrichten - Top! :)
-- An dieser Stelle ein großes Dankeschön an Zanac und Spanni! --

Da ich sowieso sehr viel mit FHEM mache, habe ich mich dazu entschlossen, ein FHEM Modul zu schreiben. Das ist nun soweit auch funktionsfähig. Mit dem Modul kann man Werte lesen, schreiben und automatisch pollen lassen. Die Besonderheit beim Schreiben über mein Modul ist, dass zuerst der aktuelle Wert gelesen wird. Erst wenn der Neue nicht dem Bisherigen entspricht, wird geschrieben und danach zur Verifikation nochmal rückgelesen. So hat man im Gegensatz zum bisherigen Python Script, eine Rückmeldung.


Ab heute 14.01.2021 habe ich das Projekt ins Wiki und Gibhub verschoben:

Dokumentation: https://wiki.fhem.de/wiki/Rotex_HPSU_Compact

Moduldateien: https://github.com/ahermann86/fhemHPSU


Viel Spaß.

Gruß
Axel Hermann

Fuxi

Hallo!
Endlich eine Möglichkeit die HPSU smart zu machen.
Klasse Arbeit. Sobald ich die Hardware habe, werde ich dies testen. Hast du einen Shop Link für den Adapter?
Will nur sicher gehen dass ich den richtigen kaufe!

Grüße

ahermann86

Hallo,

eine Kaufempfehlung kann ich nur bedingt machen. Der Adapter, welchen ich im Einsatz habe, gibt es leider nicht mehr. Den habe ich über Amazon bezogen und hieß dort:
"ELM327 USB Modifiziert CH340 + 25 K80 Chip MS HS forscan - Verkauf durch: BBFLY-PRO - 21,99€ - 17.04.2018"

Rein optisch würde ich folgende versuchen:

https://www.amazon.de/FidgetGear-Code-Leseger%C3%A4t-Modified-ELMconfig-Chip-Scanner/dp/B07VV4MSHP/ref=sr_1_fkmr1_2?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&keywords=elm327+usb+modifiziert+ch340+%2B+25k80+chip+ms+hd+forscan&qid=1576792376&sr=8-2-fkmr1

https://www.amazon.de/NiceCheck-Forscan-Android-modifizierte-Elmconfig/dp/B07LGBYYN8/ref=pd_sbs_263_2/257-5406848-8870268?_encoding=UTF8&pd_rd_i=B07LGBYYN8&pd_rd_r=3a318359-30be-4ada-9e31-f7419cb7580e&pd_rd_w=k7jec&pd_rd_wg=hLx52&pf_rd_p=184816e4-edb5-4587-8faf-776e0027d8d1&pf_rd_r=ZE2VC4CAEACWS65XCAVV&psc=1&refRID=ZE2VC4CAEACWS65XCAVV

https://www.ebay.de/itm/USB-modifizierter-ELM327-MS-CAN-Forscan-OBD2-Diagnosescanner-fur-Ford/124005973950?_trkparms=aid%3D555018%26algo%3DPL.SIM%26ao%3D1%26asc%3D61048%26meid%3D60339e33e5f24babbd5c921b341b0a0c%26pid%3D100005%26rk%3D1%26rkt%3D10%26sd%3D282957903791%26itm%3D124005973950%26pmt%3D1%26noa%3D0%26pg%3D2047675&_trksid=p2047675.c100005.m1851

Ob der USB UART Chip ein FTDI oder ein CH340 ist, wird bei Linux egal sein. Wichtig ist im Endefekt die Software im Adapter. Der Adapter sollte "konfigurierbar" sein.

Als Download habe ich ein Bild von meinem Adapter und ein Sceenshot des Moduls im FHEM.

Gruß
Axel

Fuxi

Danke dir!!!

Hab mal einen bestellt, sobald er da ist, werde ich es gleich testen!


Banis

Hallo Alex,

finde ich super, ganau  dass was ich schon lange gesucht habe.

Gerne würde ich auch testen, leider  bin ich beim Thema can bus und Verkabelung ziemlicher Laie und trau mich da noch nicht richtig hin.
Zumindest war mir die Beschreibung von zanac und Spanni etwas zu schwierig was die Verkabelung anbelangt. Ist das bei dieser Hardware gleich oder etwas einfacher?

Viele Grüße
Andy
Intel Nuc i8 mit Proxmox. FHEM läuft als LXC

ahermann86

Hallo Banis,

bei der Verkabelung gibt es eigentlich keine größeren Hürden. Die größte wird wohl sein, an den OBD Stecker zwei Kabel anzuschließen. Mehr brauch man wirklich nicht.
An der RoCon muss man am J13 den CAN-H und CAN-L anschließen (Bild "Anschluss RoCon.png"). Bei mir ist das ein ~10m langes KNX Kabel zum OBD Adapter, welcher an meinem Server angeschlossen ist. Alternativ würde ich ein Netzwerkkabel bzw. Patchkabel vorschlagen...
Wichtig beim Arbeiten an der RoCon: ALLE Sicherungen ausschalten! Es genügt damei nicht nur, die Sicherung von der Steuerung sondern auch die vom BackupHeater und der Außeneinheit auszuschalten!!

Anbei habe ich ein Paar Bilder zur Herstellung der Stecker für den OBD Adapter. Ich habe dazu von einem alten Computernetzteil den Motherboard Versorgungsstecker mißbraucht. Die passen gut und man hat auch mehrere Operationsversuche ;) Das sieht man auf dem Bild "Adapter 1.jpg" bis "Adapter 3.jpg". Auf dem Bild "Adapter 3.jpg" sieht man auch die verwendeten Pins. Dabei ist gelb (Pin 6) der CAN-H und rot (Pin 14) CAN-L.

Übrigens: Das Bild "Falscher Adapter.jpg" ist einer, welcher nicht funktioniert.

Viel Erfolg und schöne Weihnachten.

Gruß
Axel

klaushofer

Hallo,

ich bin gerade dabei, meine HPSU ansprechen zu können. Meine ersten Gehversuche habe ich mit dem Script von Spanni26 gemacht. Das Auslesen klappt auch soweit in der Konsole.

Für mich ist aber noch wichtig, Befehle schreiben zu können, so dass ich bspw. die Solltemperatur oder das Heizprogramm ändern kann. Wie geht das mit deinem fhem Plug-in?

Als Hardware nutze ich einen PiCan2 (siehe Bild). Aktuell im Skript von Spanni26 läuft dieser mit dem Treiber "PYCAN". Wird der CAN-Adapter auch von diesem Plugin unterstützt?

Vielen Dank

ahermann86

Hallo,

ich verwende keinen Raspberry Pi (mehr).
Das von mir entwickelte FHEM Modul funktioniert (bisher) nur mit einem ELM327. Ich sehe hier den Vorteil, dass der an jeden "normalen" Linux PC/Server anschliessbar ist...

Gruß
Axel

Fuxi

#8
Habe jetzt alles probiert. Device ist bei INTERNAL "Init_state_0". Der ELM State ist "init", und bei READINGS ist State "opened".
Weiss jetzt spontan nicht mehr weiter. USB Adresse per ist sicher richtig. Ist das vielleicht ein nicht funktionierender OBD2 Adapter? Sieht gleich wie deiner aus, nur mit anderem Logo.

Achja, nutze einen RaspberryPi.

Grüße

ahermann86

#9
Hallo Fuxi,

ich habe noch einen Log eingebaut. Aktualisiere das Modul mit der angehängten Datei aus diesem Post. Weiterhin habe ich die commands_hpsu.json aktualisiert, was aber mit diesem Fehler nichts zu tun hat.

Gehe wie folgt vor:

1. Aktualisiere und lade das Modul neu.
2. Schließe die Kommunikation mit dem Adapter über "set <Devicename> Disconnect".
3. Aktiviere das Log über das Attribut "DebugLog" mit "on".
4. Öffne die Verbindung mit  "set <Devicename> Connect".

Es sollte nun im FHEM Ordner die Datei "70_HPSU_Log.log" erstellt werden. Poste deren Inhalt, damit ich weitere Infos zur Fehlersuche habe.


Bei mir sieht die Log Datei so aus:


2020.01.02_20:24:35: HPSU 143: Msg: AT Z<\r><\r><\r>ELM327 v1.5<\r><\r> State: Init_step_0
2020.01.02_20:24:35: HPSU 143: Msg: AT E1<\r>OK<\r><\r> State: Init_step_1
2020.01.02_20:24:35: HPSU 143: Msg: AT PP 2F ON<\r>OK<\r><\r> State: Init_step_2
2020.01.02_20:24:35: HPSU 143: Msg: AT SP C<\r>OK<\r><\r> State: Init_step_3


Gruß
Axel

Fuxi

#10
Alles gemacht, wie du beschrieben hast, jedoch taucht die Log Datei nirgends auf.

Braucht man die CanBus Masse (Pin5) auch wie Spanni im Readme beschrieben hat?

ahermann86

#11
Ok, probiers Mal mit diesem...

Sollte sowas rauskommen:


2020.01.02_22:19:20: HPSU 340: Init
2020.01.02_22:19:20: HPSU 131: RAW Buffer AT Z<\r>
2020.01.02_22:19:21: HPSU 131: RAW Buffer AT Z<\r><\r><\r>ELM327 v1.5<\r><\r>>
2020.01.02_22:19:21: HPSU 144: Msg: AT Z<\r><\r><\r>ELM327 v1.5<\r><\r> State: Init_step_0
2020.01.02_22:19:21: HPSU 131: RAW Buffer AT E1<\r>OK<\r><\r>>
2020.01.02_22:19:21: HPSU 144: Msg: AT E1<\r>OK<\r><\r> State: Init_step_1
2020.01.02_22:19:21: HPSU 131: RAW Buffer AT PP 2F ON<\r>OK<\r><\r>>
2020.01.02_22:19:21: HPSU 144: Msg: AT PP 2F ON<\r>OK<\r><\r> State: Init_step_2
2020.01.02_22:19:21: HPSU 131: RAW Buffer AT SP C<\r>OK<\r><\r>>
2020.01.02_22:19:21: HPSU 144: Msg: AT SP C<\r>OK<\r><\r> State: Init_step_3

Fuxi

Hier der magere Inhalt:

"2020.01.02_22:24:37: HPSU 340: Init"

Ich werde morgen weiter machen.
Danke dir aber trotzdem für die mühen heute am späten Abend.  :)

Fuxi

Achja, seit Update auf 3.1 kommen folgende Fehlermeldungen im Fhem-Log:

"020.01.02 22:24:14 1: PERL WARNING: Subroutine HPSU_Initialize redefined at ./FHEM/70_HPSU.pm line 46.
2020.01.02 22:24:14 1: PERL WARNING: Subroutine HPSU_Define redefined at ./FHEM/70_HPSU.pm line 61.
2020.01.02 22:24:14 1: PERL WARNING: Subroutine HPSU_Undef redefined at ./FHEM/70_HPSU.pm line 100.
2020.01.02 22:24:14 1: PERL WARNING: Subroutine HPSU_Ready redefined at ./FHEM/70_HPSU.pm line 110.
2020.01.02 22:24:14 1: PERL WARNING: Subroutine HPSU_Read redefined at ./FHEM/70_HPSU.pm line 119.
2020.01.02 22:24:14 1: PERL WARNING: Subroutine HPSU_Set redefined at ./FHEM/70_HPSU.pm line 210.
2020.01.02 22:24:14 1: PERL WARNING: Subroutine HPSU_Get redefined at ./FHEM/70_HPSU.pm line 291.
2020.01.02 22:24:14 1: PERL WARNING: Subroutine HPSU_Init redefined at ./FHEM/70_HPSU.pm line 323.
2020.01.02 22:24:14 1: PERL WARNING: Subroutine HPSU_Attr redefined at ./FHEM/70_HPSU.pm line 346.
2020.01.02 22:24:14 1: PERL WARNING: Subroutine HPSU_Disconnect redefined at ./FHEM/70_HPSU.pm line 355.
2020.01.02 22:24:14 1: PERL WARNING: Subroutine HPSU_Task redefined at ./FHEM/70_HPSU.pm line 370.
2020.01.02 22:24:14 1: PERL WARNING: Subroutine HPSU_Read_JSON_updreadings redefined at ./FHEM/70_HPSU.pm line 584.
2020.01.02 22:24:14 1: PERL WARNING: Subroutine HPSU_CAN_RequestReadings redefined at ./FHEM/70_HPSU.pm line 611.
2020.01.02 22:24:14 1: PERL WARNING: Subroutine HPSU_Read_JSON_File redefined at ./FHEM/70_HPSU.pm line 640.
2020.01.02 22:24:14 1: PERL WARNING: Subroutine HPSU_CAN_ParamToFind redefined at ./FHEM/70_HPSU.pm line 692.
2020.01.02 22:24:14 1: PERL WARNING: Subroutine HPSU_toSigned redefined at ./FHEM/70_HPSU.pm line 727.
2020.01.02 22:24:14 1: PERL WARNING: Subroutine HPSU_CAN_ParseMsg redefined at ./FHEM/70_HPSU.pm line 742.
2020.01.02 22:24:14 1: PERL WARNING: Subroutine HPSU_CAN_RequestOrSetMsg redefined at ./FHEM/70_HPSU.pm line 864.
2020.01.02 22:24:14 1: PERL WARNING: Subroutine HPSU_getLoggingTime redefined at ./FHEM/70_HPSU.pm line 962.
2020.01.02 22:24:14 1: PERL WARNING: Subroutine HPSU_Log redefined at ./FHEM/70_HPSU.pm line 971.
"

ahermann86

Zu dem "mageren" Inhalt: Der Port wurde geöffnet aber der Adapter "redet bzw. antwortet" noch nicht einmal auf die AT Befehle. Es kommt noch nicht einmal ein "?" von dem Adapter zurück. Hast du auch wirklich den richtigen Port (/dev/...) in der Definition angegeben?

Zum Testen ob der Adapter überhaut was macht, kannst du den Mal an einen Windows PC anschließen und über ein Terminal (Baudrate: 38400) den Befehl "AT Z<CR>" schicken. Die Antwort vom Adapter sollte "ELM327 v1.5" lauten.

Die "PERL WARNING: Subroutine HPSU_.." sind nach reload eines Moduls normal. Das ist mir auch aufgefallen, aber das passiert bei jedem anderem Modul auch, wenn man es neu lädt und die Funktionen (schon) existieren.

Gruß
Axel