abbrechen
Suchergebnisse werden angezeigt für 
Anzeigen  nur  | Stattdessen suchen nach 
Meintest du: 
Beantwortet! Gehe zur Lösung.

Datenpunkte in der API gesucht

Hallo,

ich versuche es einmal auf diesem Weg an die genauen Bezeichnungen der API features (DP) für meine Vitocal 222-S zu kommen.

 

Ich suche hier die Datenpunkte für folgende VitoConnect Bezeichnungen:

 

- elektrische Zusatzheizung

- Heizwasserdurchlauferhitzer

- Speicherladepumpe

 

Vielleicht kann mir jemand auf die Sprünge helfen. Bitte keine Verweise auf das Entwicklungsforum. Da wurden mir bisher die Fragen nicht beantwortet.

 

Vielleicht weiß auch jemand, wie man die Advanced Datenpunkte der API erwerben kann.

 

Vielen Dank.

 

Gruß

Joachim

122 ANTWORTEN 122

Ich sehe im MQTT Explorer die hochzählenden Werte von 0 bis 9.

danke für die Rückmeldung und sorry für den Wiggel!

 

ich vermute dass wegen der vrituellen umgebung der Verweis auf das dynamisch importierte Modul fehl schlägt.

 

Ich habe dir ein feature branch mit direktem import des mqtt_util gemacht:

https://github.com/philippoo66/optolink-splitter/tree/nodynimport

branch main hat jetzt keinen dynamischen Import mehr.

 

bitte erstetze deine optolinkvs2_splitter.py durch die darin enthaltene! es sind nur 2..3 Zeilen geändert, aber das sollte das Problem lösen, wo mqtt_util selbst ja funktioniert.

 

Für Benutzung ohne MQTT gibt es jetzt den extra branch "no_mqtt".

 

Grüsse!

Hallo Phil,

ich habe das neue script "optolinkvs2_switch.py" aus Github heruntergeladen und in das Verzeichnis "optolink" kopiert, das virtuelle environment aktiviert und "optolinkvs2_switch.py" ausgeführt. Das Ergebnis ist das gleiche wie zuvor.

bist du sicher dass du im richtigen Verzeichnis agierst etc? Das Ergebnis kann eigentlich nicht gleich sein, weil jetzt in Zeile 22 nix mehr steht (Leerzeile).

 

Kannst du bitte noch mal die genaue und komplette Fehlermeldung posten!?

 

Es ist schon seltsam, du bist ja nicht der erste, der den splitter benutzt... Und der 'Einzeltest' von mqtt_util führt ja genau das gleiche connect() mit genau den gleichen Einträgen aus der settings_ini aus. Ich habe den Kram auch bei mir getestet, inkl. venv und so. Irgendwas ist hier seeehr seltsam.

ich habe noch mal weiter geschaut...

 

"OSError: [Errno 22] Invalid argument" steht in Zusammenhang mit dem Öffnen einer Datei (vlt auch eines 'devices', einer seriellen Schnittstelle).

 

ist da alles korrekt eingetragen? Hast du in der settings_ini noch irgendwas geändert, bsw. das log_vitoconnect aktiviert oder im viessdata_csv_path irgendwas eingetragen?

 

Kannst du den Inhalt der settings_ini ggf mal hier reinkopieren?!

 

nochwas: liefert python --version das gleiche wie python3 --version?

 

 noch eine kleine Erklärung zu mqtt_user = None :

der betreffende Abschnitt im Code ist ja der hier:

 

HerrP_0-1723581036600.png

 

mqtt_user = None heisst also nur, dass dann die Funktion  username_pw_set()  nicht ausgeführt wird. Es wird nicht None übergeben, sondern eben garnix (bzgl. user/pwd gemacht). Dementsprechend wird das  connect()  weiter unten mit anonymous gemacht. 

 

aber inzwischen gehe ich eigentlich davon aus, dass das Problem mit MQTT garnix zu tun hat...

Da ich die Vitoconnect noch nicht über den CP2001 angeschlossen habe, habe ich die Vitoconnect Definition aus der settings_ini.py auf None gesetzt. Danach geht es ein Stück weiter. Die angehängte settings beinhaltet noch die Definition für die Vitoconnect.

 

(myvenv) pi@Pi4JMF:~/optolink $ python optolinkvs2_switch.py
Server listening on 0.0.0.0:65234
Broker granted the following QoS: 0
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b'\x05'
rx 06
rx 41 0d 01 01 08 8e 08 ae 0b 18 01 20 01 03 01 a4
list index out of range
exit close
reset protocol
closing serViDev
cancel poll timer
exiting TCP/IP client
disconnect MQTT client

 

Noch eine Verständnisfrage. Ich habe den USB Anschluss des Optolinks auf einen freien USB Port von meinem RPi gesetzt. Ist das korrekt?

 

Folgende tty Devices sind verfügbar:

 

(myvenv) pi@Pi4JMF:~/optolink $ dmesg | grep tty
[ 0.000000] Kernel command line: coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_headphones=0 snd_bcm2835.enable_headphones=1 snd_bcm2835.enable_hdmi=1 snd_bcm2835.enable_hdmi=0 smsc95xx.macaddr=E4:5F:01:D6:1D:82 vc_mem.mem_base=0x3eb00000 vc_mem.mem_size=0x3ff00000 console=ttyS0,115200 console=tty1 root=PARTUUID=2d8815d8-02 rootfstype=ext4 fsck.repair=yes rootwait
[ 0.000345] printk: console [tty1] enabled
[ 1.938474] fe201000.serial: ttyAMA1 at MMIO 0xfe201000 (irq = 36, base_baud = 0) is a PL011 rev2
[ 1.938732] serial serial0: tty port ttyAMA1 registered
[ 1.944079] printk: console [ttyS0] disabled
[ 1.944539] fe215040.serial: ttyS0 at MMIO 0xfe215040 (irq = 37, base_baud = 62500000) is a 16550
[ 1.944597] printk: console [ttyS0] enabled
[ 8.093193] systemd[1]: Created slice system-getty.slice - Slice /system/getty.
[ 8.112017] systemd[1]: Created slice system-serial\x2dgetty.slice - Slice /system/serial-getty.
[ 8.189090] systemd[1]: Expecting device dev-ttyS0.device - /dev/ttyS0...
[ 10.466238] usb 1-1.3: ch341-uart converter now attached to ttyUSB0
[23325.724534] ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0
[36702.500589] usb 1-1.3: ch341-uart converter now attached to ttyUSB0
[73173.456685] ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0
[121181.132297] usb 1-1.3: ch341-uart converter now attached to ttyUSB0

 

 

 

sieht ganz danach aus (siehe meine letzten Infos dazu) 😎

Moin Joachim!

 

Langsam kommen wir der Sache näher 🙂 Der list index out of range kommt daher, dass die Wärmepumpen den Zeitstempel in einem anderen Format übertragen als die Gas-Wandgeräte, hier wird der 0x20-te Wochentag in einer Liste Mo..Fr gesucht. Das hatten wir schon - siehe hier

 

Also als nächstes die poll_list auf Einträge anpassen, die es gibt und das Format richtig setzen. Das Datum an 088E gibt es, aber ändere erstmal das Format auf raw (in Wirklichkeit ist es irgendein wahrscheinlich Unix Time Stamp Ähnliches, der Converter ist noch nicht eingebaut).

 

>> den USB Anschluss des Optolinks auf einen freien USB Port von meinem RPi

 

Solange du nur ein ttyUSB Gerät dran hast, ist das kein Problem. Sobald du mehrere serielle Converter anschliesst, kann es sein, dass der Opto mal ttyUSB0 und ein andres (Boot-) mal ttyUSB1 ist. Dann macht es Sinn, (gewöhnlich) anhand der Seriennummer des Chips einen festen namen zuzuordnen, z.B. ttyOptolink.

 

Wenn das bei dir nötig werden sollte, sag ich dir, wies's geht, oder ich schreib es zwischendurch in's Wiki.

 

Ich seh auch schon den nächsten potentiellen Stolperstein mit der on-Board UART bei Raspi 3 und 4. Der ttyS0 kann mit even Parity (die das Viessmann Protokoll nun mal benutzt) nur einmal pro boot benutzt werden. Wir er ein mal geschlossen muss der Pi neu gestartet werden. Aber auch da gibt es einen Weg (Umstellen auf ttyAMA0) - ich muss dringend das Wiki etwas ergänzen... 😉

 

Aber gut, dass wir schon mal weiter sind! (ich hab den dynamischen Import auch schon wieder eingebaut)

 

Such dir erstmal ein paar grundlegende Datenpunkte raus und beschränk die Liste im ersten Moment da drauf.

 

Grüsse!

Moin Phil,

ich habe die Pollingliste auf die Außentemperatur und Anlagenzeit begrenzt und die Anlagenzeit auf raw gesetzt. Damit kommt es nicht mehr zu dem Datums Problem. Allerdings geht es mit den Fehlermeldungen weiter. Ich hoffe, du hast eine Idee dazu.🤔

 

(myvenv) pi@Pi4JMF:~/optolink $ python optolinkvs2_switch.py
Server listening on 0.0.0.0:65234
Broker granted the following QoS: 0
b'\x05'
init_vs2: Timeout waiting for 0x06
init_vs2 failed
init_vs2 failed
exit close
reset protocol
closing serViDev
cancel poll timer
exiting TCP/IP client
disconnect MQTT client

wurde pi3-miniuart.bt nicht auf miniuart.bt umbenannt?

als erstes solltest du TCP/IP ausschalten wenn du es nicht benutzt (settings_ini):

  tcpip_port = None

(hat aber nix mit dem aktuellen Fehler zu tun)

 

das, was wir jetzt als Fehler sehen, bedeutet, dass das Umschalten auf VS2 Protokoll grad nicht klappt (Antwort 0x06 auf Request 0x16,0x00,0x00). Das hat aber nichts mit deinen Änderungen zu tun!

 

etwas komisch ist das schon, weil die 0x05 auf den Protokoll Reset 0x04 ja kommt.

 

Starte das Skript noch mal, zur Not musst du die Vito einmal aus und wieder an schalten. Sitzt der Optolink Kopf noch richtig?!

 

 

>> wurde pi3-miniuart.bt nicht auf miniuart.bt umbenannt?

 

kann schon sein, die werfen ja dauernd irgendwas um. bei mir klappt es mit dem pi- davor, aber ich habs mal mit ins Wiki geschrieben - danke!

Der Optolink Kopf sitzt korrekt, da ich immer noch Vitoconnect stand alone nutzen kann. Ich habe die VitoCal aus- und eingeschaltet. Danach lief das script mit folgenden Fehlermeldungen:

 

(myvenv) pi@Pi4JMF:~/optolink $ python optolinkvs2_switch.py
Server listening on 0.0.0.0:65234
Broker granted the following QoS: 0
b''
b''
b''
b''
b''
b''
b'\x05'
rx 06
rx 41 0d 01 01 08 8e 08 ae 0b 2b 01 32 01 12 01 d8
rx 06
rx 41 06 03 01 25 00 01 01 31
Error Message 01
Error do_poll_item 1, Addr 2500, RetCode 3, Data 01
rx 06
rx 41 06 03 01 25 00 01 01 31
Error Message 01
Error do_poll_item 2, Addr 2500, RetCode 3, Data 01
rx 06
rx 41 06 03 01 25 00 01 01 31
Error Message 01
Error do_poll_item 3, Addr 2500, RetCode 3, Data 01
rx 06
rx 41 06 03 01 25 00 01 01 31
Error Message 01
Error do_poll_item 4, Addr 2500, RetCode 3, Data 01

 

Der raw Wert der Anlagezeit lautet:

 

ae0b2c0133011301

 

das sieht doch gut aus! Abgesehen, dass du noch lauter Datenpunkte (bzw den einen immer wieder, 0x2500) liest, die es auf deiner Anlage nicht gibt, aber die Reaktion ist die richtige. Optolink Error Code 0x01 steht für gewöhlich für 'Datenpunkt existiert nicht'. Den bekomme ich auch, wenn ich versuche 0x1234 zu lesen.

 

den komischen Time stamp kann ich noch nicht interpretieren, vielleicht kommen wir da irgendwann mal zu....

 

 

du musst jetzt erstmal 'richtige' Datenpunkte zusammenstellen!

Ich habe den ttyS0 Port für den Vitoconnect in der settings gesetzt und Vitoconnect an den CP2102 angeschlossen. Anschließend den RPi 4 restarted und das script "optolinkvs2_switch". Danach bekomme ich folgende Feherlemeldung:

 

(myvenv) pi@Pi4JMF:~/optolink $ python optolinkvs2_switch.py
awaiting VS2...
Server listening on 0.0.0.0:65234
Broker granted the following QoS: 0
device reports readiness to read but returned no data (device disconnected or multiple access on port?)
exit close
closing serViCon
reset protocol
closing serViDev
cancel poll timer
exiting TCP/IP client
disconnect MQTT client

 

Verbinde ich die Vitoconnect nicht mit dem CP2102, bekomme ich folgende Fehlermeldungen:

 

(myvenv) pi@Pi4JMF:~/optolink $ python optolinkvs2_switch.py
[Errno 13] could not open port /dev/ttyS0: [Errno 13] Permission denied: '/dev/ttyS0'
exit close
cancel poll timer
exiting TCP/IP client

 

 

 

das ist genau das Verhalten des ttyS0

 

1. hast du noch die serielle Console am laufen meine ich gesehen zu haben, die musst du abschalten!

2. kommt es beim 2. Versuch, die S0 mit EVEN Parity zu öffnen, zu einem Fehler!

 

 

was für einen Raspi benutzt du? größer/gleich 3?

mein Test RPi ist ein 4er. Das ganze soll aber letztendlich auf einem 5er als weitere Funktion laufen

also dann AMA0 statt S0 (oder vor jedem Skript-Start neu booten 😉 )

aber erstmal die serielle Konsole ausschalten und die UART einschalten!

Top-Lösungsautoren