Neue Insider Version 1 zur V 4.5 verfügbar

NEU! Dynamische Akzentfarben in der VISU per Objekt steuerbar
NEU! Seite wechseln sperren per Objekt
NEU! Neue Symbole in VISU und Logik Manager
NEU! Putzmodus im VISU Client
NEU! Umfangreich verbesserter Logik Manager


Alle Informationen hier: https://elabnet.atlassian.net/wiki/x/AYD5ng

[Erfahrungsbericht] [V4.0 IP4] Resol VBus Daten eines Cosmo Uno Solarreglers mit Tasmota SMI und MQTT in Timberwolf Zeitserien speichern

User-Geschichten zu erfolgreichen Projekten wie Migrationen vom Wiregate, Eigenbauten, usw.
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln
Antworten
Benutzeravatar

Ersteller
Parsley
Reactions:
Beiträge: 642
Registriert: Di Okt 09, 2018 7:27 am
Wohnort: 490..
Hat sich bedankt: 704 Mal
Danksagung erhalten: 406 Mal

[V4.0 IP4] Resol VBus Daten eines Cosmo Uno Solarreglers mit Tasmota SMI und MQTT in Timberwolf Zeitserien speichern

#1

Beitrag von Parsley »

Moin zusammen

Ich möchte hier ein kleines Bastelprojekt vorstellen, zu dem mich der TWS animiert hat.

In unserem Haus steht ein Frischwasserspeicher mit einem Cosmo Uno Solarregler, der als einzige Kommunikationsschnittstelle einen sogenannten VBus hat. In meinem Fall sind in diesem System 2 Temperatursensoren (Kollektor und Speicher) und eine Pumpe mit PWM Ansteuerung verbaut. Um die Anlage überwachen zu können habe ich einige Zeit recherchiert, bis ich endlich auf folgende Dokumentation des VBus gestoßen bin:

https://danielwippermann.github.io/reso ... cification

Auf dieser Seite ist das "physical layer" und das "protocol" des VBus dokumentiert und sogar "example schematics" für VBus Geräte sind hier zu finden.

Ein kleiner Test mit Multimeter, Oszilloskop und Saleae Logic bestätigte, dass es sich tatsächlich um die passende Dokumentation handeln musste. Offensichtlich steckt hinter meinem Cosmo Uno tatsächlich ein Resol Gerät. Der Logic Analyzer zeichnete fleißig Telegramme auf, die immer wieder dieses Schema zeigten:

Bild

Die Rohdaten sahen so aus:

Code: Alles auswählen

AA 10 00 40 78 10 00 01 13 13 14 51 56 23 04 1D 64 00 75 00 04 22 38 22 38 22 05 46 30 09 00 00 01 45 00 00 00 00 00 7F 00 00 00 00 00 7F_00 00 00 00 00 7F 65 00 00 00 00 1A 24 1E 00 00 01 3C 24 1E 00 00 01 3C 00 00 00 00 00 7F 00 00 00 00 00 7F 00 00 00 00 00 7F_00 00 00 00 00 7F 00 00 00 00 00 7F 00 00 00 00 00 7F 00 00 00 00 00 7F 00 00 00 00 00 7F 00 00 00 00 00 7F
AA 15 00 40 78 10 00 01 0B 16 03 01 00 00 00 7B 64 00 75 00 04 22 38 22 38 22 05 46 00 00 71 58 0C 2A 01 08 00 00 00 76 00 00 00 00 00 7F_02 0A 00 00 00 73 64 00 75 00 04 22 00 00 00 00 00 7F 01 0B 00 00 00 73 00 00 00 00 00 7F
AA 00 00 40 78 20 00 05 00 00 00 00 00 00 00 22
An dieser Stelle war ich ermutigt nach Jahren mal wieder eine Platine zu routen. Eagle war inzwischen Out und KiCad der neue heiße Sch... und so habe ich mich "mal eben schnell" dort eingearbeitet und diese Schaltung gezeichnet:

Bild

Footprints aussuchen und Platine routen sah am Ende so aus:

Bild

Erklärung: Zu diesem Zeitpunkt hatte ich ein ESP8266 und ein ESP32 NodeMCU board auf meinem Tisch liegen und mir war noch nicht klar woran ich den VBus anschließen wollte. Ich hatte aber eine deadline (ein Familienurlaub) vor dem ich die Platine bestellen wollte und darum habe ich das "Lochraster-Prinzip" gewählt: Die 4 Pins von J2 (GND, 3,3V, TX, RX) sind nirgendwo hin verbunden. Die 3 Lochreihen können zB NodeMCU Platinen verschiedener Breite/Bauart aufnehmen. Mit ein bisschen Fädeldraht können dann die Pins von J2 auf die passenden Beinchen der aufgesteckten NodeMCU verbunden werden. Wie das bei mir aussieht kann man weiter unten in den Bildern sehen.

Die Suche nach Bauteilen war etwas nervig und am Ende habe ich den für mich bequemsten Weg gewählt und alle SMD Bauteile direkt von JLC-PCB bestücken lassen. Der Preisunterschied von unter 3$ für 5 nackte Platinen zu mehr als 39$ (38,23€ Endpreis) für 5 SMD-bestückte Platinen ist zwar heftig, aber im Vergleich zu Bestellung von Mindermengen an Bauteilen, die ich von insgesamt 2 Shops bestellen und selbst auflöten hätte müssen...
Die durch die Bestückung etwas erhöhlte Produktionsdauer war auch ein Grund, warum ich die Bestellung unbedingt vor dem Urlaub abschicken wollte, damit die Wartezeit durch den Urlaub "verkürzt" werden konnte. Also abwarten und die Zeit sinnvoll nutzen für die Software.

Software: Die Controller Wahl fiel auf die NodeMCUs, weil es dafür Tasmota gibt und ich in der Tasmota Dokumentation den Resol VBus gefunden hatte:

https://tasmota.github.io/docs/Smart-Me ... -plus-vbus

Entsprechend der Tasmota Dokumentation konnte leider keine fertig compilierte Tasmota Version verwendet werden, weil in diesen Versionen SMI nicht aktiv ist. Also habe ich Tasmota-12.4.0.zip heruntergeladen und aus der user_config_override_sample.h folgende user_config_override.h erstellt und Tasmota damit compiliert. (Es ich dieses Projekt gemacht habe war 12.4.0 die aktuellste Version. Inzwischen gibt es neuere Versionen.)

user_config_override.h

Ein paar Wochen nach der Bestellung kam die ersehnte Lieferung und nach ein wenig Löterei konnte eine bereits mit Tasmota vorbereitete ESP8266 NodeMCU aufgesteckt werden.

Bild

Bild

Bild

Bild

Bild

Jetzt musste noch das SMI-Script angepasst werden. Mit Hilfe der Dokumentationen des Resol VBus und des Tasmota-SMI sowie meines Bus-Mitschnitts habe ich dieses Script erstellt:

Code: Alles auswählen

>D
r="1,AA100040781000011313"
>B
=>sensor53 r
>M 1
+1,3,v,0,9600,Solar
%r%vo4sw@10,T1 Kollektor,°C,temp1,1
%r%vo6sw@10,T2 Speicher,°C,temp2,1
%r%vo8sw@10,T3 Speicher,°C,temp3,1
%r%vo10sw@10,T4 Speicher,°C,temp4,1
%r%vo20ub@1,P1 PWM,%%,pump1PWM,0
%r%vo21ub@1,P2 PWM,%%,pump2PWM,0
%r%vo28uw@100,SW version,,SWversion,2
%r%vo32uw@1,Operating hours P1 low,h,OpHoursP1lo,0
%r%vo34uw@1,Operating hours P1 high,h,OpHoursP1hi,65536
%r%vo36uw@1,Operating hours P2 low,h,OpHoursP2lo,0
%r%vo38uw@1,Operating hours P2 high,h,OpHoursP2hi,65536
%r%vo64ub@b0:1,Store Cooling,,StoreCool,0
%r%vo65ub@b0:1,System Cooling,,SystemCool,0
%r%vo67ub@b1,Antifreeze,,Antifreeze,0
%r%vo68ub@b0:1,Collector Cooling,,CollectCool,0
%r%vo69ub@b0:1,Max Store Temp,,MaxStoreTemp,0
%r%vo72uw@1,Error Mask 1,,ErrorMask1,0
%r%vo74uw@1,Error Mask 2,,ErrorMask2,65536
#
Welches auf dem WebGUI von Tasmota dann so aussieht:

Bild

Bild

Jetzt noch den MQTT Broker in Tasmota eintragen, um die Daten an den TWS zu übertragen und dort in einer Zeitserie abspeichern.

Bild

Bild

Bild

Auf den Platinen ist übrigens nur der RX Pfad bestückt, weil ich keinen Bedarf habe den Solarregler zu beeinflussen. Und ich bin mir auch nicht sicher, ob das ebenfalls mit dem Tasmota SMI möglich wäre.

(Apropos JLC-PCB: Die Mindeststückzahl von 5 Platinen ist etwas unpraktisch, wenn man nur einen Solarregler hat. Zum Zeitpunkt der Veröffentlichung dieses Beitrags liegen hier noch 3 überzählige Platinen. Edit: Jetzt sind alle weg. :) )
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von Parsley am Mi Jan 31, 2024 8:58 pm, insgesamt 4-mal geändert.
Gruß Parsley



Timberwolf Server 3500L #657 (VPN offen, reboot nach Absprache)
Bitte WIKI lesen.

Mibr85
Reactions:
Beiträge: 538
Registriert: Mo Dez 02, 2019 5:38 am
Wohnort: Freital
Hat sich bedankt: 419 Mal
Danksagung erhalten: 232 Mal

#2

Beitrag von Mibr85 »

Sehr schöne Anleitung :-)
Ich bin der Meinung das die frischwasserstation von Viessmann auch VBus sprechen bin mir aber nicht ganz sicher.
Grüße Micha

TWS 3500 XL #1209 + TWS 2600 #528 + PBM #972,
VPN offen, Reboot möglich
PLZ 01...
Benutzeravatar

starwarsfan
Reactions:
Beiträge: 1314
Registriert: Mi Okt 10, 2018 2:39 pm
Hat sich bedankt: 828 Mal
Danksagung erhalten: 1097 Mal

#3

Beitrag von starwarsfan »

Hi
Parsley hat geschrieben: Mo Nov 06, 2023 1:10 am Ich möchte hier ein kleines Bastelprojekt vorstellen, zu dem mich der TWS animiert hat.
Super cool, ich liebe solche Sachen! Danke für's teilen. :handgestures-thumbupright:
Kind regards,
Yves

- TWS 2500 ID:159 (VPN offen, Reboot nach Rücksprache) - PBM ID:401 - TWS 3500 ID:618 (VPN offen, Reboot nach Rücksprache) - ControlPro - ProxMox - Edomi (LXC / Docker) - ... -

kl8ter
Reactions:
Beiträge: 2
Registriert: Fr Jul 05, 2024 11:10 am

#4

Beitrag von kl8ter »

Moin,
ich bin gerade dabei die Daten von meinem Cosmo Uno zu lesen und in mein Smarthome einzubinden.
Ich nutze dafür ein VBus-Decoder .
Vorerst vielen Dank für die tolle Anleitung.
Ich versuche die Roh-daten:

Code: Alles auswählen

AA 10 00 40 78 10 00 01 13 13 14 51 56 23 04 1D 64 00 75 00 04 22 38 22 38 22 05 46 30 09 00 00 01 45 00 00 00 00 00 7F 00 00 00 00 00 7F_00 00 00 00 00 7F 65 00 00 00 00 1A 24 1E 00 00 01 3C 24 1E 00 00 01 3C 00 00 00 00 00 7F 00 00 00 00 00 7F 00 00 00 00 00 7F_00 00 00 00 00 7F 00 00 00 00 00 7F 00 00 00 00 00 7F 00 00 00 00 00 7F 00 00 00 00 00 7F 00 00 00 00 00 7F
AA 15 00 40 78 10 00 01 0B 16 03 01 00 00 00 7B 64 00 75 00 04 22 38 22 38 22 05 46 00 00 71 58 0C 2A 01 08 00 00 00 76 00 00 00 00 00 7F_02 0A 00 00 00 73 64 00 75 00 04 22 00 00 00 00 00 7F 01 0B 00 00 00 73 00 00 00 00 00 7F
AA 00 00 40 78 20 00 05 00 00 00 00 00 00 00 22
..zu interpretieren.
Wie ich es richtig verstanden habe sind in Byte[10] und [11] die Ersten Nutzdaten[14] [51] in Hex.
Laut dem Protokoll sollten es eine Temperatur [Solar T1 Kollektor] sein egal wie ich die Zahlen dreh und wende ich komm nicht auf einem Plausiebeln wert.

Wie muss die beiden Bytes verrechnen um auf einen Plausibelen Wert zu kommen?
Benutzeravatar

Ersteller
Parsley
Reactions:
Beiträge: 642
Registriert: Di Okt 09, 2018 7:27 am
Wohnort: 490..
Hat sich bedankt: 704 Mal
Danksagung erhalten: 406 Mal

#5

Beitrag von Parsley »

Moin
und willkommen im Timberwolf Server Forum.

Wie du schon richtig schreibst sind die Werte hexadezimal dargestellt. ;) Rechne sie doch mal in das dezimale Zahlensystem um: 0x14 = 20 und 0x51 = 81. Das sind für mich recht plausible Temperaturen für Speicher und Solarkollektor.
Gruß Parsley



Timberwolf Server 3500L #657 (VPN offen, reboot nach Absprache)
Bitte WIKI lesen.

kl8ter
Reactions:
Beiträge: 2
Registriert: Fr Jul 05, 2024 11:10 am

#6

Beitrag von kl8ter »

Danke :dance:
Aber da kann ich nicht ganz mitgehen, denn in der Dokumentation steht, dass die Temperatur eines Sensor in 2 Bytes beschrieben wird und in der Anzeige von Dir hat die Temperatur eine Nachkommastelle.
0x1451 = 5021
5021÷10 = 502,1 *C kommt mir etwas viel vor und stimmt mit der Anzeige (siehe Bild im ersten Eintrag) von 34.5 *C Solar T1 Kollektor nicht überein.
Benutzeravatar

Ersteller
Parsley
Reactions:
Beiträge: 642
Registriert: Di Okt 09, 2018 7:27 am
Wohnort: 490..
Hat sich bedankt: 704 Mal
Danksagung erhalten: 406 Mal

#7

Beitrag von Parsley »

Ist schon ein Jahr her, dass ich mich damit beschäftigt habe und ich erinnere mich nicht daran, dass ich die Daten manuell ausgewertet habe. :shifty: Tasmota hat das für mich gemacht. ;)
Gruß Parsley



Timberwolf Server 3500L #657 (VPN offen, reboot nach Absprache)
Bitte WIKI lesen.
Antworten

Zurück zu „Erfolgsgeschichten“