NEWS
Rotex HPSU / Daikin Altherma Wärmepumpe über ioBroker.canbus
-
@crycode sagte in Rotex HPSU / Daikin Altherma Wärmepumpe über ioBroker.canbus:
Kann es sein, dass du vergessen hast ....
Mitterweile glaube ich, dass ich zu jedem Fehler fähig bin ...
Ich habe diese Befehle (nochmal?) eingegeben ...
sudo apt install can-utils sudo apt install build-essential cmake git git clone https://github.com/mguentner/cannelloni.git cd cannelloni cmake -DCMAKE_BUILD_TYPE=Release make sudo make install
Das kam raus ... (als LINUX-Laie sehe ich, dass da etwas nicht simmt ... aber wie beheben ...)
login as: iobroker iobroker@192.168.178.120's password: Linux VM-ioBroker 6.1.0-13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.55-1 (2023-09 -29) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Sun Jan 21 11:19:53 2024 from 192.168.178.67 iobroker@VM-ioBroker:~$ iob stop iobroker@VM-ioBroker:~$ sudo apt install can-utils Paketlisten werden gelesen… Fertig Abhängigkeitsbaum wird aufgebaut… Fertig Statusinformationen werden eingelesen… Fertig can-utils ist schon die neueste Version (2020.11.0-1). 0 aktualisiert, 0 neu installiert, 0 zu entfernen und 2 nicht aktualisiert. iobroker@VM-ioBroker:~$ sudo apt install build-essential cmake git Paketlisten werden gelesen… Fertig Abhängigkeitsbaum wird aufgebaut… Fertig Statusinformationen werden eingelesen… Fertig build-essential ist schon die neueste Version (12.9). cmake ist schon die neueste Version (3.25.1-1). git ist schon die neueste Version (1:2.39.2-1.1). 0 aktualisiert, 0 neu installiert, 0 zu entfernen und 2 nicht aktualisiert. iobroker@VM-ioBroker:~$ git clone https://github.com/mguentner/cannelloni.git Schwerwiegend: Zielpfad 'cannelloni' existiert bereits und ist kein leeres Verzeichnis. iobroker@VM-ioBroker:~$ cd cannelloni iobroker@VM-ioBroker:~/cannelloni$ cmake -DCMAKE_BUILD_TYPE=Release CMake Warning: No source or binary directory provided. Both will be assumed to be the same as the current working directory, but note that this warning will become a fatal error in future CMake releases. -- Could NOT find SCTP (missing: SCTP_LIBRARY SCTP_INCLUDE_DIR) -- SCTP not found. cannelloni will be build without SCTP support. -- Install lksctp-tools for SCTP. -- Configuring done -- Generating done -- Build files have been written to: /home/iobroker/cannelloni iobroker@VM-ioBroker:~/cannelloni$ make [ 5%] Building CXX object CMakeFiles/addsources.dir/inet_address.cpp.o In file included from /usr/include/c++/12/string:40, from /home/iobroker/cannelloni/inet_address.h:4, from /home/iobroker/cannelloni/inet_address.cpp:1: In static member function ‘static constexpr std::char_traits<char>::char_type* std::char_traits<char>::copy(char_type*, const char_type*, std::size_t)’, inlined from ‘static constexpr void std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::_S_copy(_CharT*, const _CharT*, size_type) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12/bits/basic_string.h:423:21, inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Allocator>& std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::_M_replace(size_type, size_type, const _CharT*, size_type) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12/bits/basic_string.tcc:532:22, inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Alloc>& std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::replace(size_type, size_type, const _CharT*, size_type) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12/bits/basic_string.h:2171:19, inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Alloc>& std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::insert(size_type, const _CharT*) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12/bits/basic_string.h:1928:22, inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Allocator> std::operator+(const _CharT*, __cxx11::basic_string<_CharT, _Traits, _Allocator>&&) [with _CharT = char; _Traits = char_traits<char>; _Alloc = allocator<char>]’ at /usr/include/c++/12/bits/basic_string.h:3541:36, inlined from ‘std::string formatSocketAddress(const SocketStringAddress&)’ at /home/iobroker/cannelloni/inet_address.cpp:92:29: /usr/include/c++/12/bits/char_traits.h:431:56: error: ‘void* __builtin_memcpy(void*, const void*, long unsigned int)’ accessing 9223372036854775810 or more bytes at offsets [2, 9223372036854775807] and 1 may overlap up to 9223372036854775813 bytes at offset -3 [-Werror=restrict] 431 | return static_cast<char_type*>(__builtin_memcpy(__s1, __s2, __n)); | ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ cc1plus: all warnings being treated as errors make[2]: *** [CMakeFiles/addsources.dir/build.make:104: CMakeFiles/addsources.dir/inet_address.cpp.o] Fehler 1 make[1]: *** [CMakeFiles/Makefile2:116: CMakeFiles/addsources.dir/all] Fehler 2 make: *** [Makefile:136: all] Fehler 2 iobroker@VM-ioBroker:~/cannelloni$ sudo make install [ 5%] Building CXX object CMakeFiles/addsources.dir/inet_address.cpp.o In file included from /usr/include/c++/12/string:40, from /home/iobroker/cannelloni/inet_address.h:4, from /home/iobroker/cannelloni/inet_address.cpp:1: In static member function ‘static constexpr std::char_traits<char>::char_type* std::char_traits<char>::copy(char_type*, const char_type*, std::size_t)’, inlined from ‘static constexpr void std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::_S_copy(_CharT*, const _CharT*, size_type) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12/bits/basic_string.h:423:21, inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Allocator>& std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::_M_replace(size_type, size_type, const _CharT*, size_type) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12/bits/basic_string.tcc:532:22, inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Alloc>& std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::replace(size_type, size_type, const _CharT*, size_type) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12/bits/basic_string.h:2171:19, inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Alloc>& std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::insert(size_type, const _CharT*) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12/bits/basic_string.h:1928:22, inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Allocator> std::operator+(const _CharT*, __cxx11::basic_string<_CharT, _Traits, _Allocator>&&) [with _CharT = char; _Traits = char_traits<char>; _Alloc = allocator<char>]’ at /usr/include/c++/12/bits/basic_string.h:3541:36, inlined from ‘std::string formatSocketAddress(const SocketStringAddress&)’ at /home/iobroker/cannelloni/inet_address.cpp:92:29: /usr/include/c++/12/bits/char_traits.h:431:56: error: ‘void* __builtin_memcpy(void*, const void*, long unsigned int)’ accessing 9223372036854775810 or more bytes at offsets [2, 9223372036854775807] and 1 may overlap up to 9223372036854775813 bytes at offset -3 [-Werror=restrict] 431 | return static_cast<char_type*>(__builtin_memcpy(__s1, __s2, __n)); | ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ cc1plus: all warnings being treated as errors make[2]: *** [CMakeFiles/addsources.dir/build.make:104: CMakeFiles/addsources.dir/inet_address.cpp.o] Fehler 1 make[1]: *** [CMakeFiles/Makefile2:116: CMakeFiles/addsources.dir/all] Fehler 2 make: *** [Makefile:136: all] Fehler 2 iobroker@VM-ioBroker:~/cannelloni$
Es gibt einen canneloni-Ordner ...
... aber an der richtigen Stelle ?
-
@raspiuser Da hat der Build nicht geklappt.
Den Infos nach ist das wohl ein Bug in gcc-12/g++-12 (dem Compiler).Mit gcc-11/g++-11 sollte es funktionieren (im
cannelloni
-Verzeichnis):sudo apt install gcc-11 g++-11 export CC=gcc-11 export CXX=g++-11 rm -f CMakeCache.txt cmake -DCMAKE_BUILD_TYPE=Release make sudo make install
Bei der Ausgabe vom
cmake [...]
Befehl, sollte u.a. folgendes enthalten sein, was dir zeigt, dass gcc-11/g++-11 verwendet werden:-- The C compiler identification is GNU 11.3.0 -- The CXX compiler identification is GNU 11.3.0
-
@crycode sagte in Rotex HPSU / Daikin Altherma Wärmepumpe über ioBroker.canbus:
Da hat der Build nicht geklappt.
... aber jetzt ... die Werte kommen (wieder) an ... Vielen Dank für deine Hilfe !!!
Und ich bin ein wenig beruhigt, dass nicht ich unmittelbar das Problem war (oder ?!)
Muss / sollte ich die Anleitung (s. erster Beitrag) anpassen ?
EDIT:
... und sollte man (ich) etwas im Dateisystem o.ä. aufräumen ? -
@raspiuser Immer gerne Nein, du warst (diesmal) nicht das Problem
Im Dateisystem brauchst du da eigentlich nichts aufräumen.
Die Anleitung könnte man um einen entsprechenden Hinweis ergänzen. -
@crycode Erstmal alle Daumen hoch !!!
Ich habe jetzt auch versucht meine Altherma Echo-2 (Baujahr 2022/23) über CAN-Bus zu steuern (Die UART-Schnittstelle an X-10A erlaubt leider/vermutlich nur das Auslesen von Betriebsdaten).
An meiner Altherma ist am X3 des MMI eine Mischstation (EKMIKPOAF) für einen 2.ten Heizkreis angeschlossen.
Ich verwende einen ESP32 und bin zunächst an der 20kBit Baudrate gescheitert.
Wie sich herausgestellt hat, arbeitet dieser CAN-Bus aber mit 50kBit und auch die Frames sehen ganz anders aus als die von euch dokumentierten.Es werden hier die folgenden Can-IDs verwendet:
Can-ID,Daten, Frequenz-
0000 , 0101, 1x
-
0081, 810001FFFFFFFFFF, 1x
-
058A, 4F17250064000000, ~2/Sekunde
4B2225002A010000
606D250000000000 -
060A, 4017250000000000, ~2/Sekunde
4022250000000000
2B6D2500C2010000 -
06CA, 8000200000000405, alle 5 Sekunden
4000200000000000 -
070A, 7F, alle 3 Sekunden
-
0701, 05, alle 3 Sekunden
058A 4F17 könnte die Stellung des 3-Wege Ventils sein (100%)
058A 4B22 dürfte der little endian Temperaturwert des Sensors sein (28-32°C)
060A 2B6D sieht auch noch einem Temperaturwert aus 45.0°C
Nur scheinen leider alle Register im Zusammenhang mit der Mischergruppe zu stehen *Laut Installationshandbuch EHS157034 (RO-CON) verwendet diese auch den CAN-Bus gemeinsam mit der Mischergruppe ....
Die Mischstation steuert ein Dreiwegeventil, bis zu zwei PWM-Pumpen und kann einen Temperaturfühler auslesen.
Bis jetzt werden aber immer nur die gezeigten Werte gesendet. Ich werde noch einen Aktuatortest machen um zu sehen ob sich die Werte wenigstens dann ändern.Kannst du mit den gezeigten Frames was anfangen ? Gibt es vielleicht eine zweite CAN-Schnittstelle für die von euch gezeigte Implementierung ? Muß ich die Altherma vielleicht umkonfigurieren, daß sie eine Steuerung erlaubt ? Auf Abfrageframes 0680 31 00 XX reagiert die Schnittstelle mit Ignoranz
Danke für deine bisherige Arbeit und vielleicht kannst du mir ja weiterhelfen, denn die ONECTA App ist wohl nur ein schlechter Scherz ...
LG, Tom
-
-
Hi ich glaube das ist keine CAN Verbindung.Du misst mal gucken da gibts nen extra Projekt für den Anschluss x10.
-
@cb187 Ja am X10-A habe ich einen zweiten ESP32 der die UART Schnittstelle ausliest und die Daten per MQTT verschickt. Da sehe ich ziemlich alle Betriebsdaten, kann aber keine Werte schreiben.
Ich würde aber gerne Sollwerte witterungsbedingt bzw. zur Optimierung bei PV-Ertrag verändern.
Also habe ich mich voller Euphorie auf dieses Projekt gefreut nur "tut" meine CAN-Schnittstelle anders und reagiert nicht oder mit Störung auf Abfragen.Meine CAN-Schnittstelle arbeitet auch mit 50kBit/s und nicht mit 20kBit/s und dürfte nur für Mischstation und Raumbedienmodul verwendet werden ?!
0701 05 zeigt Mischstation online 0701 7F Mischstation offline
070A dürfte der entsprechende Status für das Raumbedienmodul sein (das ich nicht habe).Schicke ich "abstruse" Abfragen geht die WP auf Störung "Kommunikationsfehler Mischstation".
Auf der Suche nach einem zweiten CAN-Bus habe ich leider auf keiner der Platinen in der WP einen CAN-Transceiver Chip gefunden.
Ich denke ich leiste mir so ein Raumbedienmodul und sehe mir die Kommunikation dann nochmals an. Ohne Untersuchung am lebenden Patienten dürfte das sonst schwer werden
Gesagt - getan, wenn ich das Bedienmodul angeschlossen habe werde ich weiter berichten .... -
@viennatom Das scheint wieder ein ganz anderes Protokoll zu sein.
Mir ist zumindest bislang keine Gemeinsamkeit mit den bisher bekannten Daten aufgefallen.
Zudem scheinen es bei dir meistens 8 Datenbytes zu sein, wobei es bei den aktuell funktionierenden Modellen immer 7 Bytes sind. -
@crycode Danke für deine Antwort. Ja die Datenpakete sehen ganz anders aus. Die Werte scheinbar in little endian und ich habe auch keine "polling frames" sehen können. Wird scheinbar unaufgefordert gesendet ....
Mitte Feb. bekomme ich die Bedienstation über die man fast alle Einstellungen ändern kann (Sollwerte, Heizkurve, etc.) - ich werde dann berichten.Bei dem 20kBit Protokoll und deinen Abfragen hat mich gewundert, warum manchmal 20 0A XX, 30 00 XX oder 60 00 XX verwendet wird ? Ist hier das Modul und nicht die Can-ID ausschlaggebend ?
Funktionieren mehrere Varianten oder ist das vom Register abhängig (oder hab ich mich vertan) ?
e.g:
300 / 20 0A 04 T-HK Soll setzen, lesen aber mit 61 00 04
300 / 30 00 05 T-Raum Soll setzen, lesen aber mit 61 00 05
300 / 60 00 28 T-Vorlauf Max setzen, lesen mit 61 00 28180 / 20 0A 0E
180 / 30 00 13Ich wollte das Protokoll auf ESP32 implementieren und mir was ersparen
-
@viennatom Das hängt damit zusammen, dass die Entwickler hier die Funktionsweise des CAN Bus etwas anders interpretiert haben...
Die eigentliche Nachrichten-ID ist hier die ID von der Absender-Baugruppe. In den ersten beiden Nachrichten-Bytes steckt dann die ID von der Empfänger-Baugruppe und was es für eine Nachrichtenart sein soll. Dann folgt die ID des Wertes und dann die Daten...
Ich habe das versucht hier einigermaßen zu dokumentieren. -
@crycode said in Rotex HPSU / Daikin Altherma Wärmepumpe über ioBroker.canbus:
die Entwickler
Jaja und bei mir waren wieder andere am Werk
Die haben wohl auch vergessen, daß es eine 32 Bit CAN-ID gibt um Nachrichten vernünftig Baugruppen oder Funktionen zuordnen und entsprechend filtern zu können. Naja die ganze WP scheint ein wenig zusammengestoppelt zu sein ... -
@cb187 Wo finde ich denn die json config zum runter laden?
-
Du kannst übe Import/Export die Keon von Github abrufen.
-
@cb187 Sorry, ich stehe heute auf dem Schlauch. Import/Export aber wo? Hier im Forum? Gibt es ein link?
-
Im Adapter
-
Hallo,
sorry für meine vielleichten komischen Fragen.
JASON config wo finde ich diese genau?
Ich meine ich suche im Prinzip den Nachrichtenkatalog um die Signale richtig deuten zu können.
Oder verstehe ich das was falsch? -
-
@hurricane55557 Alternativ direkt die json auf GitHub: https://github.com/crycode-de/ioBroker.canbus/blob/master/well-known-messages/configs/rotex-hpsu-1.7.0.json
-
Vielen Dank an euch beide.
Werde gleich mal schauen ob ich damit weiter komme. Bin meinem Ziel schon wieder ein Schritt näher gekommen!!!
Danke euch -
Hallo zusammen,
ich habe folgenden Fehler im ioBroker:
canbus.0 *timestamp* debug read parser 61 for 680 returned undefined
wo fang ich an zu suchen...
EDIT:
Sorr habs gefunden... meine can0 läuft nicht korrekt.ich versuche nämlich mit einem USB-CAN-A (Waveshare) und SLCAND die Schnittstelle zum laufen zu bekommen..
jemand schon mal damit erfolgreich gewesen???
Geht um die ROTEX HPSU Wärmepumpe.Grüße