Forum: Projekte & Code UVR 1611 (TA), Auswertung DL, Mega88, WinAVR


von Harald P. (haraldp)


Angehängte Dateien:

Lesenswert?

Viele Solaranlagen verwenden den universellen Regler UVR1611 (inklusive 
Zubehör) von
Technische Alternative GmbH
Internet: http://www.ta.co.at
Auch der Braunschweiger Solaranlagenhersteller SOLVIS verwendet diese 
Komponenten (zumindest bei mir).
Der Regler besitzt eine zweipolige Datenleitung DL, auf der zyklisch 
etwa 1/s alle wichtigen internen Analog-und Digitalwerte ausgegeben 
werden.
Mit einer zweiadrigen Leitung kann das Signal zu einer entfernten Stelle 
weitergeleitet und dann dekodiert angezeigt werden.
Durch den großen Pegelhub und den relativ langsamen Signalwechseln ist 
das Signal recht störunempfindlich.
Die Dekodierung kann recht einfach mit einem AVR durchgeführt werden.
Die SW soll mehr ein Beispiel dafür sein, wie die Signale dekodiert und 
angezeigt werden können. Wegen der recht unterschiedlichen 
Einsatzmöglichkeiten des Reglers, sind Änderungen und Anpassungen 
notwendig.
Harald

von Jochen R. (josch90)


Lesenswert?

Hallo Harald, habe mich nun mal daran gemacht deinen Code zu verstehen, 
da ich allerdings noch nicht ganz so fit in C bin kam ich recht schnell 
ins Straucheln...
Deshalb hier ein Paar fragen:

Welche verwendung hat der EEProm in deiner Programmierung?
Sehe ich dass richtig dass du das Signal mit UART auswertest, weil du 
diese initialisiert hast? Aber das Protokoll des UVR ist doch etwas 
anderst aufgebaut?!

Vielleicht schaff ich es ja deinen Code etwas mehr zu verstehen wenn du 
mir die Fragen beantwortest.

Danke schonmal

Gruß

Jochen

von Harald P. (haraldp)


Lesenswert?

Das DL-Signal wird nur an PD2 (=INT0) geführt und dann per Interrupt 
ausgewertet. Der UART wird bei mir nur für Testzwecke benutzt. Man 
braucht ihn also eigentlich nicht.
Zum Einlesen benötigt man nur die ISR-Routinen (ohne UART) und die 
DL-Struktur mit ein paar Hilfsbytes.
Die Sprache C ist eigentlich auch nicht mein Favorit (vgl. 
http://www.henning-thielemann.de/CHater.html), aber die einzige 
vernünftige Alternative dazu (beim AVR) wäre Assembler. Für einfache 
uP-Aufgaben kann man jedoch auch mit C arbeiten. Immerhin gibt es viele 
Tutorials im Netz. Zumindest halte ich ein C-Programm für verständlicher 
als ein ASM-Programm.
Wenn es helfen sollte, könnte ich das Programm mal so abspecken, daß nur 
die Auswerteroutinen übrig bleiben. Was man dann mit den empfangenen 
Daten macht, bleibt jedem selbst überlassen.

Harald

von Jochen R. (josch90)


Lesenswert?

Harald P. wrote:

> Wenn es helfen sollte, könnte ich das Programm mal so abspecken, daß nur
> die Auswerteroutinen übrig bleiben. Was man dann mit den empfangenen
> Daten macht, bleibt jedem selbst überlassen.

Dafür wäre ich dir echt dankbar, dann könnte ich es mit einer 
UART-Routine verknüpfen, dass dürfte ich mit meinen jetzigen 
C-kenntnissen noch schaffen.

Gruß

von Harald P. (haraldp)


Angehängte Dateien:

Lesenswert?

Hier die abgespeckte Version. Die Daten werden nur eingelesen und stehen 
dann im RAM.

Harald

von matthias-riedel (Gast)


Lesenswert?

Hallo Haraldp

kannst du mir den aufbau des DL signals irgenwie zukommen lassen?
Ich habe schon mehrfach danch gesucht, aber nie was gefunden.

Matthias

von matthias-riedel (Gast)


Lesenswert?

Sorry,

haette gleich deine ZIP anschauen sollen

Matthias

von C. R. (jolly71)


Lesenswert?

Ich habe auch eine UVR1611 und interessieren sich für das Projekt 
haraldp
haraldp oder kann jemand schicken Sie das Muster, um es zu machen?
Vielen Dank an alle

von Harald P. (haraldp)


Lesenswert?

Hallo C.R.,
leider habe ich die Frage/Problem nicht verstanden. Um was geht es?
Harald

von C. R. (jolly71)


Lesenswert?

sorry aber ich benutze die automatischen Übersetzer zu schreiben.
wenn möglich, ich brauche Schema elektronischen Leiterplatten und Ihrer 
avr88 Board mit LCD zu mir selbst zu bauen.
Dank

von Harald P. (haraldp)


Angehängte Dateien:

Lesenswert?

Hier noch einige zusätzliche Infos zu meiner UVR1611-Erweiterung
Harald

von Holger Götze (Gast)


Lesenswert?

Hallo Harald,

vielen Dank für die Anleitung!

So könnte man doch auch zusätzliche Sensorwerte in den Bus einspeisen, 
oder?

MfG
Holger

von Harald P. (haraldp)


Lesenswert?

Hallo Holger,
ich war im Urlaub, so daß ich erst jetzt mir die Forenbeiträge 
angeschaut habe. Die Frage habe ich nicht verstanden. Welche Sensorwerte 
solllten in den Bus dazugepackt werden und von wem?
So wie ich das verstanden habe, kann man die Zuordnung der Signale auf 
den DL-Bus nicht ändern. Aber vielleicht doch. Vielleicht weiß da jemand 
mehr.

Harald

von Bene (Gast)


Lesenswert?

Hi Allerseits,
un hoffe einen guten Urlaub gehabt zu haben :)

Das Thema ist spannend und ich auf einem ähnlichem Weg.
Das Auslesen des DL mit nem AVR ist schon eine nette Lösung.
Zum Schreiben auf dem DL hab ich noch nichts gefunden, bin aber am 
sammeln inwiefern über den CAN-Bus direkt das umsetzbar wird.

Als Verarbeiter dann ein AVR und CAN-Transceiver und dann sollte es 
gehen.
Den vorhandenen UVR spielt man vor, man sei ein oder mehrere I/O-Module 
und baut sie entsprechend auch in seiner Regelung ein.

Ich werde wohl nicht den AVR nehmen sondern direkt einen Kleinstrechner 
(Beaglebone), so kann ich gleich den Home-Automation-Server mit 
Webinterface mitlaufen lassen. Falls mir das mißlingt, wirds AVR und nen 
UART. (ist auch günstiger).

Aber noch ist nichts am laufen, daher bin ich gespannt auf Ideen.
Habt ihr eine Protokollbeschreibung für den CAN-Bus von TA bekommen?

Besten Gruß
Bene

von Harald P. (haraldp)


Lesenswert?

Ja, über CAN kann man auch auf die UVR1611 zugreifen. Das habe ich auch 
getestet, dann aber wieder aufgegeben.
Testaufbau:
- CAN Transceiver MCP2551
- 2 schnelle Optokoppler zur Entkopplung Rx,Tx (könnte auch entfallen)
- CAN Controller MCP2515
- ATMega88
dazu ein Terminalprogramm, das den CAN-Controller bedient.
Grundsätzlich hat es funktioniert. Variable etc. ließen sich auslesen. 
Setzen haben ich nicht probiert. Insgesamt bin ich mit dem CAN-Bus 
schlecht klargekommen.
TA hat mir zwar 2 Dokumente dazu geschickt, aber ohne tiefe 
CAN-Kenntnisse kann man wohl nicht allzuviel damit anfangen. CSDO, SSDO 
usw. blieben mehr oder weniger böhmische Dörfer für mich.
Durch allzu rigides Auslesen von CAN-Nachrichten habe ich die UVR zum 
Absturz gebracht. Aber glücklicherweise war alles reversibel.
Also, kein echter Erfolg. Mir reicht der DL-Bus.
Harald

von Jo A. (jo0)


Lesenswert?

Hallo Harald,

... TA hat mir zwar 2 Dokumente dazu geschickt, aber ohne tiefe
CAN-Kenntnisse kann man wohl nicht allzuviel damit anfangen...

Kannst du diese 2 Dokumente bitte mal zur Verfügung stellen ?
Bin auch an diesem Thema interessiert.

Gruß Jo

von Karsten (Gast)


Lesenswert?

Hallo allerseits,

ein Super Beitrag das Auslesen über DL-Bus.

Bei mir steht die Aufgabe einen Festbrennstoff-Kessel über einen MODBUS 
anzubinden. Als MODBUS wird RS-485 als physische Schnittstelle 
verwendet. Nun benötige ich ein Gateway von MOD-Bus zu CAN-BUS oder von 
MOD-BUS zu DL.

Hat jemand soetwas schon gemacht?

Viele Grüße

Karsten

von Meinolf L. (meilu)


Lesenswert?

hallo
habt ihr euch schonmal gedanken demacht den DL-Bus an einen Raspberry zu 
bringen ?


meilu

von HaraldP (Gast)


Lesenswert?

meinolf lutter schrieb:
> hallo
> habt ihr euch schonmal gedanken demacht den DL-Bus an einen Raspberry zu
> bringen ?

Könnte evtl. funktionieren, da die Signalwechsel nicht allzu häufig 
sind. Besser ist jedoch eine Art Gateway mit AVR. So habe ich das 
gemacht:
HW: AtMega16; ENC28j60
SW: gesagtes DL-Pgm; DL-Daten werden per Udp-Broadcast gesendet.
Jeder Ethernet-Teilnehmer (auch RPi) kann dann diese Daten empfangen und 
auswerten.

Harald

von Olli (Gast)


Lesenswert?

Hallo Harald,

das was Du da gemacht hast ist ziemlich genau das, was ich auch suche.
Ich hab' den NET-IO von Pollin und versuche dem genau das beizubringen.

Ich denke Dein Ansatz wäre ein Interessantes Projekt hier. Meinst Du, Du 
könntest da was zur Verfügung stellen?

Gruß,
Olli

von Harald P. (haraldp)


Lesenswert?

Olli schrieb:
> Ich denke Dein Ansatz wäre ein Interessantes Projekt hier. Meinst Du, Du
> könntest da was zur Verfügung stellen?
>
> Gruß,
> Olli

Na ja, in meinem Programm stecken noch viele weitere Details:
 - Mittelwertbildung
 - Gaszählerauslesung
 - Rolladensteuerung
 - (ungenutzte) SD-Kartenansteuerung
 - zusätzliche RS485-Schnittstelle
 - ...

Mit dem kompletten Programm könnte keiner außer mir etwas anfangen. Die 
SW-Bausteine für das oben genannte Ziel sind doch eigentlich alle da:
 - DL-Bus auslesen
 - 64Byte Daten zusammenstellen
 - per Udp senden

Harald

von S. K. (skg)


Angehängte Dateien:

Lesenswert?

Ich habe ein einfacheres Model von TA, die UVR-31, die bei mir seit 1996 
läuft und den gleichen Bus verwendet erfolgreich an den Raspberry B+ 
angebunden (PIGPIO Bibliothek für den GPIO Zugriff mit Python). Die 
CPU-Last am Raspberry liegt für den PIGPIOD Daemon und das Python 
Programm bei ca. 10-15%. Das Protokoll nutzt den Manchester Code. Daher 
wird auch die UVR-1611 problemlos funktionieren.

Die Pegelanpassung erfolgt mittels einiger weniger Komponenten (ein 
CNY17 Optokoppler mit Diodenschutzschaltung und zwei Widerstände), 
Kosten weniger als 1€ (Siehe beiliegende Simulation der Schaltung mit 
LTSpice IV).

Das Ganze kostet deutlich weniger als D-LOGG (aber viel mehr Zeit ;-) ).

skg

: Bearbeitet durch User
von meilu (Gast)


Lesenswert?

hallo harald,
hast du von deiner anzeige ein schaltplan oder platinenlayout ?
habe versucht das dl signal mit dem arduino zu dekodieren.
klappt nur sporadisch. ich nehme an das der avr durch das arduino
zu stark ausgebremst wird.

meinolf ( dl6dbh)

von Harald P. (haraldp)


Lesenswert?

meilu schrieb:
> hast du von deiner anzeige ein schaltplan oder platinenlayout ?

Es gibt bei nur Lochrasterplatinen mit Fädeldraht (0.2mm CuL aus alten 
Trafos). Ein - zugegebenermaßen - rudimentären Schaltplan findest du in 
der Anlage

Harald P. schrieb:
> Autor:
>
>       Datum: 03.08.2010 17:29

Viel ist da nicht zu verschalten: Ein Eingang am AVR für das DL und 6 
Ausgänge für ein LCD. Das Ganze habe ich inzwischen 4x realisiert in 
unterschiedlichen Umgebungen. Kritisch ist da nichts. Auch ein 
vorgeschaltetet Optokoppler darf durchaus CNY17 o.ä. sein.

Harald

von Jens (Gast)


Lesenswert?

Hallo,

könnt Ihr mir das Layout für das Auslesen einer ESR zukommen lassen?
Können die Daten auch in FHEM übernommen werden?

Hintergeund ist, dass ich über einen RPI und FHEM die Heizungsdaten 
aufnehme, aber leider die Daten der Solaranlage nicht einlesen kann, da 
das eine ESR31 von TA ist.
Mein Plan wäre noch, die Heizung automatisch abzuschalten, wenn Wärme 
von Solar anliegt.

Gruß
Jens

von Robert W. (rwalli)


Lesenswert?

Hallo Harald,

Welche Änderungen müsste ich an der abgespeckten Version vornehmen damit 
sie auf einem atmega328 läuft?

Robert

von Harald P. (haraldp)


Lesenswert?

Robert Walli schrieb:
> Welche Änderungen müsste ich an der abgespeckten Version vornehmen damit
> sie auf einem atmega328 läuft?

Gar keine, Mega328 hat (fast) diesselbe Architektur wie der Mega88. 
Gerade ausprobiert: Programm kompiliert mit M328p als Target.
Ergänzen mußt du, was du mit den eingelesenen DL-Daten machst. Aber das 
dürfte dir wohl klar sein.

Harald

von Robert W. (rwalli)


Lesenswert?

Hallo Harald,

Danke für Deine Antwort!

Ich probier das ganze gerade zum Laufen zu bringen und
versuche mir grad das Wissen dazu anzueignen.
Ich habe bislang die timer nur mit den Arduino-Libraries konfiguriert 
und tu mich ziemlich schwer ohne diese:(

Ich hab den praescaler für timer0 auf 1024 umgestellt und die OCR0A's 
angepasst aber leider ohne Erfolg.
Die 16 Syncbits werden Erkannt, dann aber passt was mit den timings 
nicht.

Hab ich da was falsch verstanden?
Du schreibst ja dass Du den atmega88 mit 8MHz betreibst.
Mein 328 läuft ja mit 16Mhz, da passen ja die ganzen Timings nicht...


Robert

: Bearbeitet durch User
von Harald P. (haraldp)


Lesenswert?

Robert Walli schrieb im Beitrag
>
> Hab ich da was falsch verstanden?
> Du schreibst ja dass Du den atmega88 mit 8MHz betreibst.
> Mein 328 läuft ja mit 16Mhz, da passen ja die ganzen Timings nicht...
>
> Robert

Umrechnen der Timerwerte ist natürlich notwendig. Anhand der 
Datenblätter dürfte das recht einfach sein.

von Robert W. (rwalli)


Lesenswert?

Harald P. schrieb:

> Umrechnen der Timerwerte ist natürlich notwendig. Anhand der
> Datenblätter dürfte das recht einfach sein.

Hab ich da einen Denkfehler?
Der 328 läuft doppelt so schnell, somit hab ich den Timer2 gleich 
gelassen und OCR2A von 78 auf 156 gestellt.

Der Timer0 würde bei 255 überlaufen, daher hab ich ihn von 1:256 auf 
1:1024 gestellt:
(TCCR2B = (1 << CS22) | (1 << CS21) | (1 << CS20)).

Anschliessend habe ich alle OCR0A halbiert und "TCNT0 > 80" auf "TCNT0 > 
40" gestellt.

(Timer0 ist mit 1/4 der Geschwindigkeit konfiguriert und der 328er 
taktet doppelt so schnell -> timer0 läuft mit der 1/2 Geschwindigkeit).

Ich bekommen dann als ersten Byte immer 0x30 (es sollten 0x90 sein).
Die Restlichen hab ich nicht kontrolliert.


Hab ich da irgendwas vergessen?

Robert

von Harald P. (haraldp)


Lesenswert?

Robert Walli schrieb:
> Hab ich da einen Denkfehler?
> Der 328 läuft doppelt so schnell, somit hab ich den Timer2 gleich
> gelassen und OCR2A von 78 auf 156 gestellt.

Ja, Denkfehler.
Wenn der m328 doppelt so schnell läuft, dann verdoppeln sich auch die 
Zählerwerte.
Für die Dekodierung von DL braucht man hier nur den Timer0. Also bei 
16MHz gilt:
1
 if (TCNT0>160 || TIFR0 ) // 2048us
2
dann 2x
3
 OCR0A = 95; // 1536us
4
und dann
5
 OCR0A = 127; // 2048us, für Bits1..8 wirksam
Die Werte habe ich hier korrigiert, da ich ursprünglich vergessen hatte, 
daß die resultierende Frequenz bei CTC (f/OCR0A+1) ist. Aber so kritisch 
ist das Ganze nicht.
Den Timer2 verwende ich nur zur Ausfalloffenbarung. Wenn länger als 5s 
keine gültige Daten kommen, gilt das als Ausfall. Da gibt es 1000 
weitere Methoden das zu machen.
Die Initialisierung von Timer0 kann so bleiben, also Vorteiler 1:256.

Harald

: Bearbeitet durch User
von Robert W. (rwalli)


Lesenswert?

Hallo Harald,

Danke nochmals für deine Hilfe!

Harald P. schrieb:
> Wenn der m328 doppelt so schnell läuft, dann verdoppeln sich auch die
> Zählerwerte.

Ja schon, aber ich habe - wie im vorigen post geschrieben - den 
prescaler auf 1:1024 gestellt, da der 8Bit Timer ja nicht bist 512 
kommt.
Dh. der Timer müsste 1/2 so schnell laufen, oder?

Ich glaube da ist wo anders der Wurm drinnen.
Ich hab mal länger (500 - 1000) Zyklen gewartet und dann ist folgendes 
gekommen:

11111111111111111110111111101001
11111111111111111110111100110000
11111111111111111110111101010110
11111111111111111110111101000000
11111111111111111110111101101110
11111111111111111110100010000000

anschliessend wieder 100 Zyklen nichts und dann wieder ein Wert.

Ich hab in Deinem Code beim "// mach was mit den Daten"  für 6 Werte 
(i=0-6):
Serial.println(DLWerte.t.Temp[i],BIN);
geschrieben.
Warum kommen da 32-Bit?
Ich bin ratlos:(

Robert

von Harald P. (haraldp)


Lesenswert?

Hallo Robert,
jetzt kommen wir wohl nur mit kompletten Code und Schaltplan weiter.

von Robert W. (rwalli)


Angehängte Dateien:

Lesenswert?

Hallo Harald,

Danke für deine Geduld.
Hier mal der Code und Schaltplan.

Ich hab jetzt Deinen Orginalcode hergenommen und nur die 3 
Timer-änderungen von Deinem Post angepasst.
Ich hab den UVR-61-3, hab aber den 65Byte-Datensatz vorerst drinnen 
gelassen.
Zum Testen müsste es reichen.

Jedoch ändert das auch nichts:

Ich bekommen jedoch immer den output wie im Anhang:
     0x90 0x48 0xAA...
Richtig wäere:
     0x90 0x6F 0xAA...

Mir fehlen die Ideen.

Robert

PS: Einen Screenshot eines Logic Analyzer hab ich auch noch angehängt...

: Bearbeitet durch User
von Harald P. (haraldp)


Lesenswert?

Was mir sofort auffällt, ist, daß das DL-Signal bei dir nichtinvertiert 
ankommt. Bei mir sitzt noch ein Optokoppler dazwischen,der für eine 
Invertierung sorgt.

von Robert W. (rwalli)


Lesenswert?

Hallo Harald!

Ich könnte mir in den A. beissen.
Ich habe einen Optokoppler gefunden und das ausprobiert:
Funktionierte auf Anhieb!

Das Gute an der Sache: ich habe viel über Timer gelernt und ich habe
auch den Timingfehler im Logic Analyzer gefunden. (Stolz)
Nur leider die Ursache nicht ;)

Danke nochmals!

Robert

von schwedenfan (Gast)


Lesenswert?

Hallo,

Ich möchte den Volumenstromsensor HUBA FTS4-50DL von
Technische Alternative GmbH
mit einem ATMEGA auslesen. Weiß jemand, wie der Befehl auszusehen
hat, um diesen Sensor auszulesen?

Gruß
Wolfram

von Programmierer (Gast)


Lesenswert?

schwedenfan schrieb:
> Hallo,
>
> Ich möchte den Volumenstromsensor HUBA FTS4-50DL von
> Technische Alternative GmbH
> mit einem ATMEGA auslesen. Weiß jemand, wie der Befehl auszusehen
> hat, um diesen Sensor auszulesen?
>
> Gruß
> Wolfram

get FTS4-50DL(int Durchfluss);

von Meinolf L. (meilu)


Lesenswert?

hallo
ich habe ein arduino -> canbus-shield
im terminal kann ich jetzt daten des canbus mitlesen
kann die werte aber nicht reproduzieren.
hat sich da schonmal einer versucht ?

gruß mmeilu

von johannes mainusch (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Harald,

Danke für Dein DLanz.zip. Ich habe damit meine Heizungsanlage debuggt. 
Da Du nicht so einfach im Netz zu finden bist als haraldp Dank auf 
diesem Weg.

https://www.ahojsenn.com/2016/03/06/debuggen-den-käfer-im-relais-finden/
http://krukas.dyn.amicdns.de/~pi/heizung-pi/heizung.html


Johannes

von Ingo K. (ingo_k938)


Lesenswert?

Hallo zusammen,

ähnliches Thema aber UVR64 als Steuerung.

Ich möchte die Daten von der Datenleitung (DL) gerne mittels ESP8266 an 
meine Heimautomatisierung weiterleiten (ioBroker) und dort 
visualisieren.

Kann mir bitte jemand helfen und sagen wie die Verkabelung zwischen 
DL-Leitung und ESP sein muss?

Wie bekomme ich die Daten dann weiter? Auf meinem ESP8266 läuft ESPEasy.

Danke Ingo

von Harald P. (haraldp)


Lesenswert?

Das DL-Signal der UVR64 müßte sich auch mit meinem Programm dekodieren 
lassen. Allerdings ist die Nachricht kürzer, siehe 
Schnittstellenbeschreibung in der ursprünglichen zip-Datei.
Ob der ESP8266 das kann, weiß ich nicht; vermutlich geht es. ESPEasy 
kenne ich nicht, wahrscheinlich wird es erst mit einer Erweiterung 
funktionieren. Das Problem beim ESP ist, daß er im Hintergrund die 
WLAN-Funktionen bearbeitet, so daß evtl. nicht sichergestellt ist, ob 
die Timing-Bedingungen eingehalten werden können.
Ich würde einen ATMEGA spendieren, der als Grundgerüst mein Programm 
enthält, und dann die empfangenen UVR-Daten seriell an einen ESP 
ausgeben und von dort aus weiter über WLAN. Oder ein ENC28J60-Modul an 
den ATMEGA anschließen und dann die Information als UDP an das Netzwerk 
übergeben. Die Erweiterung zur Ansteuerung des ENC ist relativ einfach. 
Beispiele hierfür findet man hier im Forum.
Harald

von Ingo K. (ingo_k938)


Lesenswert?

Hallo Harald,

vielen Dank für deine prompte Antwort.
Ich würde es im ersten Schritt mal mit einem ESP8266 versuchen.

Muss ich bei der Verkabelung etwas beachten?
Oder einfach die DL Leitung an einen Pin (welchen?) am ESP?
Oder müssen irgendwelche Wiederstände dazwischen weil in der 
Schnittstellenbeschreibung steht, das die Ausgangsschaltung der 
Datenleitung 24V beträgt?


Wäre schön wenn du mir nochmal helfen würdest.

Herzlichen Dank, und viele Grüße,
Ingo

von Harald P. (haraldp)


Lesenswert?

Hallo Ingo,

Das DL Signal wird bei mir über einen Optokoppler (SFH610, Vorwiderstand 
6.8K vor LED, Kollektor an PORTD2, Emitter an Masse) an INT0 geführt. 
Welcher ESP-Eingang interruptgesteuert werden kann, weiß ich nicht. Wie 
willst du den ESP programmieren? Als Arduino (wäre wohl am einfachsten, 
aber funktioniert evtl. nicht wegen Timing) oder mit dem SDK?
Da die Zeiten relativ lang sind, könnte möglicherweise auch ein Polling 
funktionieren. Das müßtest du selbst programmieren.
Harald

von Ingo K. (ingo_k938)


Lesenswert?

Hallo Harald,

hättest du evtl. eine kleine Skizze zwecks Aufbau und Verkabelung für 
mich?
Ich bin da nicht ganz so firm.

Zwecks Datentransport sehe ich kein Problem, das erledigt ESPEasy (die 
Firmware auf dem ESP) für mich. Die Daten selbst kann ich dann mit einem 
Script im ioBroker auseinandernehmen.

Mir geht es primär um den Aufbau bzw. Zusammenschluss der Komponenten 
inkl. Widerständen etc. Da kenne ich mich leider nicht ganz so gut aus.

Grüße Ingo

von Harald P. (haraldp)


Angehängte Dateien:

Lesenswert?

Hier eine Skizze.

von Manni (Gast)


Lesenswert?

Hallo,

wie würde man vorgehen, wenn man eigene Temperaturwerte auf den Bus 
schreiben will? Ich würde hier gerne einen AVR als DS18B20/DL Bus 
Gateway nutzen und den DL Bus Koppler/Sensoreingang emulieren (um 
möglichst viele Werte übergeben zu können, das wären 24 bei dem). Darf 
man einfach so auf den Bus schreiben oder gibt es einen master der das 
ganze aufteilt? Wie sieht's mit Kollisionserkennung aus? Hat irgendwer 
da schon mal eine Schaltung für getestet?

Liebe Grüße

von Hannes (Gast)


Lesenswert?

Hallo,

ich bin so eben sehr erfreut auf den Tread gestorben zu sein.

Ich besitze eine Solarfous UVR42 Solarsteuerung welche eine Datenleitung 
zum Ausgeben der Temperaturwerte hat. 
https://www.ta.co.at/fileadmin/Downloads/Betriebsanleitungen/00_Altgeraete/uvr42e2_4.pdf

Mittels Multimeter konnte ich eine Pegel von 9-19V AC messen.

Hierbei wird eine UVS 232 (es sollte auch D-LOGG gehen) benötigt.

Meine Überlegung war, die Temperaturwerte der Solaranlage über die 
Datenleitung auszulesen und diese mittels eines ESP8266 über MQTT an 
mein Openhab zu senden.

Gibt es hierfür schon Erfahrung bzw könnte mir jemand dabei helfen.

Die Schaltung mittels Optokoppler konnte ich schon den Beiträgen 
entnehmen. Muss diese dann an den RX Pin angeschlossen werden, oder darf 
hier jede beliebige Datenleitung genutzt werden?

Wenn das funktionieren würde wäre das MEGA :)

von Hannes D. (Firma: test) (trainer)


Lesenswert?

Ingo K. schrieb:
> Hallo Harald,
>
> hättest du evtl. eine kleine Skizze zwecks Aufbau und Verkabelung für
> mich?
> Ich bin da nicht ganz so firm.
>
> Zwecks Datentransport sehe ich kein Problem, das erledigt ESPEasy (die
> Firmware auf dem ESP) für mich. Die Daten selbst kann ich dann mit einem
> Script im ioBroker auseinandernehmen.
>
> Mir geht es primär um den Aufbau bzw. Zusammenschluss der Komponenten
> inkl. Widerständen etc. Da kenne ich mich leider nicht ganz so gut aus.
>
> Grüße Ingo

Hallo,

hat die Kommunikation und das Auswerten der Temperaturwerte mittels 
ESP8266 funktioniert?

von Uli S. (uli007)


Lesenswert?

Schau dir das mal an.
https://github.com/martinkropf/UVR31_RF24

ich habe mir das vor 4 Jahren für meinen UVR64 umgebaut und die Daten 
dann via RS232 an einen Raspi weitergeleitet. Auf dem Raspi habe ich 
dann zwei Programme die diese Daten auf den MQTT Broker, welche auch auf 
dem Raspi läuft, weitergeben. Ist mehr ein Hack, aber läuft jetzt schon 
ein paar Jahre.

Das Arduino Programm von Martin Kropf kannst du ja auf den 8266 portiern 
und um die MQTT Funktion/Ausgabe erweitern.
Zur Frage mit dem Optokoppler, den hängt du auf einen "normalen" 
Eingang, denn das TA-Protokoll hat mit einer RS232 Kommunikations nichts 
zu tun.

von Hannes D. (Firma: test) (trainer)


Lesenswert?

Uli S. schrieb:
> Schau dir das mal an.
> https://github.com/martinkropf/UVR31_RF24
>
> ich habe mir das vor 4 Jahren für meinen UVR64 umgebaut und die Daten
> dann via RS232 an einen Raspi weitergeleitet. Auf dem Raspi habe ich
> dann zwei Programme die diese Daten auf den MQTT Broker, welche auch auf
> dem Raspi läuft, weitergeben. Ist mehr ein Hack, aber läuft jetzt schon
> ein paar Jahre.
>
> Das Arduino Programm von Martin Kropf kannst du ja auf den 8266 portiern
> und um die MQTT Funktion/Ausgabe erweitern.
> Zur Frage mit dem Optokoppler, den hängt du auf einen "normalen"
> Eingang, denn das TA-Protokoll hat mit einer RS232 Kommunikations nichts
> zu tun.

Wow, vielen Dank.

Du hast also, wie von "S. K." gepostet, eine Optokoppler für die 
Kommunikation genutzt und diesen an den RX Port des RPI angeschlossen?
Ich hätte einen PC817 herumliegen, könnte ich den auch nutzen?

Auf dem RPI läuft somit dein python Skript welches die Daten an den MQTT 
Broker schickt?
https://github.com/martinkropf/UVR31_RF24/blob/master/Receiver/recv.py

Falls es doch nicht das im Link befindliche Python Skript handelt würde 
ich dich um deine genutzten Programme bitten.

Super, ich werde versuchen die Files im Ordner "UVR31_RF24" auf meinen 
ESP8266 zu laden.

von Uli S. (uli007)


Lesenswert?

Ich habe einen Arduino Nano zwischengeschalten. Dieser nimmt die Daten 
über einen SFH618A auf. Dein PC817 sollte auch passen.
Ich verwende ein, ein wenig modifiziertes ino Porgramm (also C) auf dem 
Arduino. Dieses sendet die empfangenen Daten dann über den RS232/USB 
Anschluss des Arduino Nanos an den Raspi (UBS-Anschluss).

Das kann man eleganter mit dem 8266 machen und über WLAN direkt an den 
MQTT-Raspi weitersenden.
Vielleicht mache ich das einmal, wenn ich Lust und Zeit habe. Aber dann 
muss ich auch den Keller mit WLAN ausrüsten

ich habe diesen Teil als Ausgangsbasis verwendet
https://github.com/martinkropf/UVR31_RF24/tree/master/UVR31_RF24

: Bearbeitet durch User
von Hannes D. (Firma: test) (trainer)


Lesenswert?

Uli S. schrieb:
> Ich habe einen Arduino Nano zwischengeschalten. Dieser nimmt die Daten
> über einen SFH618A auf. Dein PC817 sollte auch passen.
> Ich verwende ein, ein wenig modifiziertes ino Porgramm (also C) auf dem
> Arduino. Dieses sendet die empfangenen Daten dann über den RS232/USB
> Anschluss des Arduino Nanos an den Raspi (UBS-Anschluss).
>
> Das kann man eleganter mit dem 8266 machen und über WLAN direkt an den
> MQTT-Raspi weitersenden.
> Vielleicht mache ich das einmal, wenn ich Lust und Zeit habe. Aber dann
> muss ich auch den Keller mit WLAN ausrüsten
>
> ich habe diesen Teil als Ausgangsbasis verwendet
> https://github.com/martinkropf/UVR31_RF24/tree/master/UVR31_RF24

Deine Lösung klingt sehr spannend.

Nachdem mein RPI2 nicht in der nähe des Kellers ist würde ich es über 
WLAN und MQTT nutzen.

Leider bin ich kein Experte im Programmieren und bräuchte eine Kleien 
Hilfe.

Ich habe das Main File schon angepasst für die MQTT Kommunikation:
1
/*  
2
 ~~~~~~~~~~
3
 UVR31_RF24
4
 ~~~~~~~~~~
5
 Martin Kropf 2015 
6
 
7
 UVR31_RF24.ino:
8
 Phase change between receiving and processing
9
 
10
 */
11
12
13
// If DEBUG is defined all dump commands (dump.h/dump.ino) are compiled and 
14
// output occurs via Serial. If DEBUG is commented out, the web upload 
15
// (web.h/web.ino) is compiled and used instead. Both at once doesn't work
16
// (on the Leonardo) because the RAM storage is too small.
17
18
//#define DEBUG
19
20
// if USINGPC is defined, output is displayed on the Serial Monitor.
21
// Should be turned on if the Arduino is used on the PC,
22
// as soon as it is used with own power supply, you should comment it out.
23
24
//#define USINGPC
25
26
// adjust these values to your needs, for that remove the comments /*  */ (the values in the comments are examples)
27
28
#define MQTTDEF
29
30
const byte dataPin = 2; // pin with data stream
31
 // interrupt for data pin, see:
32
// http://arduino.cc/en/Reference/AttachInterrupt
33
const byte interrupt = 0;
34
35
//---------MQTT Test------
36
#include <ESP8266WiFi.h>
37
#include <PubSubClient.h>
38
 
39
const char* SSID = "xxxxxxxx";
40
const char* PSK = "xxxxxxxx";
41
const char* MQTT_BROKER = "192.168.2.108";
42
 
43
WiFiClient espClient;
44
PubSubClient client(espClient);
45
46
47
48
// ======================
49
50
#include <SPI.h>
51
52
#include "receive.h"
53
#include "process.h"
54
#include "dump.h"
55
#include "NRF24.h"
56
57
void setup() {
58
#ifdef USINGPC
59
  Serial.begin(115200);
60
#endif
61
  // in DEBUG mode output via serial, otherwise web upload (see above)
62
#ifdef DEBUG
63
  Serial.println("Press key for detailed output.");
64
#else
65
  NRF24::start();  
66
#endif
67
  Receive::start();
68
69
#ifdef MQTTDEF
70
    Serial.begin(115200);
71
    setup_wifi();
72
    client.setServer(MQTT_BROKER, 1883);
73
#endif
74
}
75
76
void setup_wifi() {
77
    delay(10);
78
    Serial.println();
79
    Serial.print("Connecting to ");
80
    Serial.println(SSID);
81
 
82
    WiFi.begin(SSID, PSK);
83
 
84
    while (WiFi.status() != WL_CONNECTED) {
85
        delay(500);
86
        Serial.print(".");
87
    }
88
 
89
    Serial.println("");
90
    Serial.println("WiFi connected");
91
    Serial.println("IP address: ");
92
    Serial.println(WiFi.localIP());
93
}
94
95
void reconnect() {
96
    while (!client.connected()) {
97
        Serial.print("Reconnecting...");
98
        if (!client.connect("ESP8266Client")) {
99
            Serial.print("failed, rc=");
100
            Serial.print(client.state());
101
            Serial.println(" retrying in 5 seconds");
102
            delay(5000);
103
        }
104
    }
105
}
106
107
void loop() {
108
  if (!Receive::receiving) {
109
    Process::start();  // process data
110
    Receive::start(); // receive data    
111
  }
112
#ifdef MQTTDEF
113
  if (!client.connected()) {
114
        reconnect();
115
    }
116
    client.loop();
117
#endif
118
119
#ifdef DEBUG
120
  if (Serial.available()) {
121
    while (Serial.available())
122
      Serial.read(); 
123
    if (Dump::active)
124
      Serial.println("\nDetails deactivated.");
125
    else
126
      Serial.println("\nDetails activated.");
127
    Dump::active = !Dump::active;
128
  }
129
#endif
130
}

welche Daten müsste ich jetzt mittels
1
client.publish("Temperaturwerte der Solaranlage/Puffer/Speicher");
 übertragen?
Leider konnte ich die Variable, welche zu senden wäre, noch nicht 
herauslesen :(

Ich wäre einer kleinen Hilfe deiner Seite sehr dankbar :)

von Jan H. (j_hansen)


Lesenswert?

Hallo,

Ohne mir diesen Thread durchgelesen zu haben - ich habe auf meinen ESP32 
(das Programm selbst ist eigentlich für den ESP8266) folgendes Programm 
geladen: https://github.com/Buster01/UVR2MQTT

Spannungsteiler für den DL-Bus dran und fertig - lief sofort problemlos 
und tut es immer noch. Und genau das willst du doch, oder? DL-Bus => 
ESP8266 => MQTT wenn ich es richtig verstanden habe.

von Hannes D. (Firma: test) (trainer)


Lesenswert?

Jan H. schrieb:
> Hallo,
>
> Ohne mir diesen Thread durchgelesen zu haben - ich habe auf meinen ESP32
> (das Programm selbst ist eigentlich für den ESP8266) folgendes Programm
> geladen: https://github.com/Buster01/UVR2MQTT
>
> Spannungsteiler für den DL-Bus dran und fertig - lief sofort problemlos
> und tut es immer noch. Und genau das willst du doch, oder? DL-Bus =>
> ESP8266 => MQTT wenn ich es richtig verstanden habe.

Super, vielen Dank.

Genau so etwas habe ich gesucht.

Nutzt du die Software für eine UVR1611 Anlage?
Ich habe die UVR42 und hierfür müsste man noch die Zeiten (Dauer eines 
Bits, Zeitraum eines Datenrahmens) anpassen?

Ich habe die Software auf meinen ESP gespielt uns versucht mittels 
Seriellen Monitor die Serial.println anzeigen zu lassen, jedoch 
erscheint nur ?????. Ich habe die Baudrate auch richtig eingestellt 
115200, woran könnte es noch liegen?

von Hannes D. (Firma: test) (trainer)


Lesenswert?

Hallo,

Ich habe die Schaltung mit einem cny17-4 probiert jedoch bleibt die 
Ausgangsspannung bei 3,3v.

Welche Eingangsspannung hat der UVR42 damit ich den Spannungsteiler mit 
auf eine 3,3v Ausgangsspannung berechnen kann?

von Uli S. (uli007)


Lesenswert?

Du hast schon den DL-Bus des UVR42 an die Diode (über R) des 
Optokopplers gehängt? Der Phototransistor hängt dann am ESP.

von Hannes D. (Firma: test) (trainer)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe wie im Bild ersichtlich die Verkabelung durchgeführt.

Wurde hier die richtige Masse gewählt?
Sind die Widerstände von mir korrekt gewählt?
Ich habe eine Eingangsspannung mit 12V angenommen und zum Teil gemessen.

von Hannes D. (Firma: test) (trainer)


Lesenswert?

Hannes D. schrieb:
> Hallo,
>
> ich habe wie im Bild ersichtlich die Verkabelung durchgeführt.
>
> Wurde hier die richtige Masse gewählt?
> Sind die Widerstände von mir korrekt gewählt?
> Ich habe eine Eingangsspannung mit 12V angenommen und zum Teil gemessen.

ist hier meine Ansatz korrekt?

Vielen Dank.

von Uli S. (uli007)


Lesenswert?

Hannes D. schrieb:
> Hannes D. schrieb:
>> Hallo,
>>
>> ich habe wie im Bild ersichtlich die Verkabelung durchgeführt.
>>
>> Wurde hier die richtige Masse gewählt?
>> Sind die Widerstände von mir korrekt gewählt?
>> Ich habe eine Eingangsspannung mit 12V angenommen und zum Teil gemessen.
>
> ist hier meine Ansatz korrekt?
>
> Vielen Dank.

Sollte passen. die linke Schaltung mit dem Optokoppler invertiert das 
Signal.
Zum Test kannst du ja ein kleines Testprogramm schreiben, welches das 
Signal aufzeichnet und dann über die RS232 ausgibt.

von Ralf E. (r_e)


Lesenswert?

für ESPEasy scheint es jetzt auch ein Plugin zu geben (ungetestet)
https://espeasy.readthedocs.io/en/latest/Plugin/P092_UVR1611.html

von Hannes D. (Firma: test) (trainer)


Lesenswert?

Ralf E. schrieb:
> für ESPEasy scheint es jetzt auch ein Plugin zu geben (ungetestet)
> https://espeasy.readthedocs.io/en/latest/Plugin/P092_UVR1611.html

Vielen Dank.
Mein UVR42 fehlt jedoch noch als Plugin :(

von Habedere (Gast)


Lesenswert?

Servus,
gibt es eine Möglichkeit den DL-Bus der TA FRISTAR2-WP auszulesen?
Lt. BDA ist eine "FWR22" als Relger verbaut.
Die Daten bräuchte ich im ioBroker. Also ggf. auch MQTT

Mfg

von Carsten (ck484)


Lesenswert?

Hallo,
Vielen Dank an Jan H für das teilen des Projektes "UVR2MQTT"
Ich habe die Schaltung gemäß Schaltplan aufgebaut, den Code UVR2MQTT und 
MQTT um username und password erweitert, sowie den Ausgang 14 des 
UVR1611 als Datenleitung definiert. Zwischen dem Datenausgang und GND 
des UVR1611 messe ich eine Spannung zwischen 6,7-12V und zwischen D2 und 
GND des NodeMcu eine Spannung bis 1,8V.
Dem Seriellen Monitor kann ich keine Ermittlung von Daten oder den 
Aufbau zum MQTT server entnehmen.

Die Infos aus dem Seriellen Monitor sehen wie folgt aus:
ets Jan 8 2013,rst cause:2, boot mode:(3,6)

load 0x4010f000, len 3460, room 16
tail 4
chksum 0xcc
load 0x3fff20b8, len 40, room 4
tail 4
chksum 0xc9
csum 0xc9
v00046aa0
~ld
Connecting to "SSID*"........
Status: Verbunden!

Verbindung! RSSI: -59 dBi
IP-Adresse: 192.168.xxx.xx

Receiving ... ISR not in IRAM!

User exception (panic/abort/assert)
--------------- CUT HERE FOR EXCEPTION DECODER ---------------

Abort called

stack>>>

ctx: cont
sp: 3ffffee0 end: 3fffffc0 offset: 0000
3ffffee0: 00000000 3fffff1e 0000000a 40203ec4
3ffffef0: 000000fe 00000000 00000000 00000000
3fffff00: 00000000 00000000 00000000 00ff0000
3fffff10: 5ffffe00 5ffffe00 3ffe8b6a 3ffeecbc
3fffff20: 00000000 00000003 00000004 402057ae
3fffff30: 40100535 3ffe8ae3 3ffeeb7c 402057c0
3fffff40: 40203c34 3ffe8ae3 00000004 40205cc9
3fffff50: 3fffdad0 3ffeeb40 3ffeeb7c 40203ec4
3fffff60: 3fffdad0 3ffeeb40 3ffeeb7c 40205d68
3fffff70: 31b2a8c0 00ffffff 01b2a8c0 40201ef9
3fffff80: 3fffdad0 3ffeeb40 3ffeeb7c 4020200a
3fffff90: 40208344 31b2a8c0 feefeffe feefeffe
3fffffa0: feefeffe 00000000 3ffeeca8 40205074
3fffffb0: feefeffe feefeffe 3ffe85ec 40100df1
<<<stack<<<

Was bedeutet in diesem Fall "ISR not in IRAM"?
Es würde mich freuen, wenn jemand einen Tipp hat, um das Problem zu 
lösen.
Muss ich eventuell noch weitere Einstellungen am UVR1611 treffen?
Unter dem Punkt "DATENLOGGING" wird zum Beispiel der Status der 
Datenleitung als "AUS" deklariert.
Vielen Dank im vorraus!


Jan H. schrieb:
> Hallo,
>
> Ohne mir diesen Thread durchgelesen zu haben - ich habe auf meinen ESP32
> (das Programm selbst ist eigentlich für den ESP8266) folgendes Programm
> geladen: https://github.com/Buster01/UVR2MQTT
>
> Spannungsteiler für den DL-Bus dran und fertig - lief sofort problemlos
> und tut es immer noch. Und genau das willst du doch, oder? DL-Bus =>
> ESP8266 => MQTT wenn ich es richtig verstanden habe.

von Carsten (ck484)


Lesenswert?

Ich habe das Programm nochmal über einen anderen Rechner aufgespielt und 
eine ältere Version der library "PubSubClient.h"
verwendet. Ob dies jetzt wirklich die Ursache war kann ich nicht genau 
sagen, jedenfalls funktioniert das ganze nun einwandfrei.
Falls jemand einen MQTT-Broker mit Benutzernamen und Passowort 
verwendet, muss der Code wie folgt erweitert werden:
UVR2MQTT.ino -> nach der Zeile "const char* mqtt_server = "mqtt-server"; 
// MQTT Server" ist noch folgende einzufügen:
const char* username = "username"; // MQTT Benutzername
const char* password = "password"; // MQTT Passwort

MQTT.h -> die Zeile "mqtt_client.connect("BL-NET");" wie folgt abändern
mqtt_client.connect("BL-NET, username, password");

von Wil (howil)


Lesenswert?

Carsten schrieb:
> Was bedeutet in diesem Fall "ISR not in IRAM"?

Hi Carsten,
bekommst du diese Meldung noch immer? Mein Output ist unten angeführt. 
Ich denke es werden auch keine MQTT Nachrichten versendet.

Versuche gerade die Kombi ESP8266 mit einem ESR31 meiner 
Solarthermieanlage zum Laufen zu bekommen. Habe einen ESP von Adafruit 
(Huzzah) und habe den Optokoppler genauso aufgebaut wie von Hannes D. 
gezeichnet. Leider habe ich kein Oszi um die Signale zu kontrollieren, 
nur ein Multimeter.

Muss ich für den ESR31 im Gegensatz zum UVR1611 noch etwas am Code 
ändern?
Vielen Dank im Voraus.
1
Status: Verbunden!
2
3
Verbindung! RSSI: -71 dBi
4
IP-Adresse: 192.168.10.58
5
6
Receiving ... ISR not in IRAM!
7
8
User exception (panic/abort/assert)
9
--------------- CUT HERE FOR EXCEPTION DECODER ---------------
10
11
Abort called
12
13
>>>stack>>>
14
15
ctx: cont
16
sp: 3fffff80 end: 3fffffd0 offset: 0010
17
3fffff90:  40203fa8 3ffe8b01 00000004 402061b5  
18
3fffffa0:  3fffdad0 00000000 3ffeed10 40201f40  
19
3fffffb0:  3fffdad0 00000000 3ffeed10 402055d4  
20
3fffffc0:  feefeffe feefeffe 3fffdab0 40100fa9  
21
<<<stack<<<
22
23
--------------- CUT HERE FOR EXCEPTION DECODER ---------------
24
25
 ets Jan  8 2013,rst cause:2, boot mode:(3,6)
26
27
load 0x4010f000, len 3424, room 16 
28
tail 0
29
chksum 0x2e
30
load 0x3fff20b8, len 40, room 8 
31
tail 0
32
chksum 0x2b
33
csum 0x2b
34
v000470e0
35
~ld

von Wil (howil)


Lesenswert?

Wil schrieb:
> Muss ich für den ESR31 im Gegensatz zum UVR1611 noch etwas am Code
> ändern?

Vielen Dank im Voraus,
Wil

von Wil (howil)



Lesenswert?

Wil schrieb:
> Wil schrieb:
>> Muss ich für den ESR31 im Gegensatz zum UVR1611 noch etwas am Code
>> ändern?
>
> Vielen Dank im Voraus,
> Wil

So, nun bin ich wieder etwas schlauer.
Um sicher zu gehen, dass auch wirklich brauchbare Daten am ESP ankommen 
habe ich mit einem Oszi vor und nach dem Optokoppler die 
Spannungsverläufe kontrolliert.
Damit konnte ich auch die Zeitverläufe aufzeichnen (siehe Anhänge) und 
habe gelernt, dass wie in der von Harald P. @haraldp mitgeschickten 
Beschreibung ("DLAnz.zip (1010 KB)") Daten mit bestimmter Frequenz in 
"Datenrahmen" geschickt werden. Sowohl die Frequenz als auch die 
Länge/Inhalt der Datenrahmen ist für den ESR31 anders als beim UVR1611.
Leider ist der ESR31 in der Beschreibung nicht enthalten. Ich vermute 
aber dass er mit XY Hz sehr viel weniger Bytes schickt als der UVR1611 
(488Hz).
Sehe ich es richtig, dass die Übertragungsrate ~250Hz ist (siehe 
Bildschirmfoto_von_2023-12-28_11-44-23.png)? Das passt irgendwie zu 
keinem der sonst dokumentierten Übertragungs-frequenzen von 50Hz oder 
488Hz.
Das mit angezeigte Dekodieren mit dem Oszi funktioniert noch nicht 
richtig.
BG
Wil

von Uli S. (uli007)


Lesenswert?

Wie kommst du auf ca. 250Hz.
488Hz, somit 2,048ms pro Bit sollten bei dir schon passen.

von Chris (stoffelll)


Angehängte Dateien:

Lesenswert?

Guten Morgen Zusammen,

ich bekomme das ganze leider nicht zum laufen.

Habe eine UVR16x2 mit DL-Bus (12V). Diesen habe mit entsprechenden 
Spannungsteiler (entsprechend der Schaltung von hier: 
https://espeasy.readthedocs.io/en/latest/Plugin/P092_UVR1611.html#p092-uvr1611-page) 
an meinen ESP32 angeschlossen. Leider liefert ESPEasy keine Daten, da 
laut den Logs konstant Daten empfangen und entsprechend verarbeitet 
werden müssen (p092_read: Still receiving DL-Bus bits! -> Zeile 564 in 
https://github.com/letscontrolit/ESPEasy/blob/mega/src/_P092_DLbus.ino). 
Habe mit einem "Oszi" mal die Signale gemessen und angehängt.

Habt ihr eine Idee was falsch ist?

Als alternative wollte ich die Schaltung dann mal mit einer anderen SW 
nutzen (https://github.com/Buster01/UVR2MQTT), allerdings bekomme ich 
die nicht kompiliert (für den ESP8266 und/oder ESP32).
Welche Libraries (und Versionen) müssen denn eingebunden werden?

Danke euch für eure Hilfestellung!

SL

: Bearbeitet durch User
von Chris (stoffelll)


Lesenswert?

Ich habe das zwischenzeitlich gelöst und den Code etwas optimiert, das 
vorgehen und den Anschluss dokumentiert.

Vielleicht hilft das dem einen oder anderem weiter.

https://github.com/stoffelll/UVR2MQTT

VG
SL

von Thomas G. (cardmaster)


Lesenswert?

Hallo,

bekommst du damit auch die Volumenströme von FTS-DL - Sensoren am DL-Bus 
übertragen?

Problemlos für den ESP32 zu compilieren?

Ich nutze momentan ESPeasy mit meiner UVR1611. Bekomme aber diese 
Volumenströme nicht und möchte demnächst wohl auch auf die UVR16x2 
umsteigen.

Danke dir,

Thomas

von Chris (stoffelll)


Lesenswert?

Hi Thomas,

der Volumenstrom liegt auf jedem Fall auf dem Bus, allerdings habe ich 
die Protokoll-Auswertung nicht erweitert (mangelnde Zeit und Kompetenz).

Bzgl. ESP32:
Habe ich nicht versucht, gehe aber davon aus, dass das jetzt auch 
funktionieren wird.

VG
SL

von Chris (stoffelll)


Lesenswert?

Hi Zusammen,

hat einer eine Idee, was der Wert genau aussagt und wie er zu 
interpretieren ist?
homeassistant/UVR16x2/WMZ1currentPower

https://github.com/stoffelll/UVR2MQTT/blob/master/code/MQTT.h#L53

thx
SL

von Leo (leo89)


Angehängte Dateien:

Lesenswert?

Chris schrieb:
> Ich habe das zwischenzeitlich gelöst und den Code etwas optimiert, das
> vorgehen und den Anschluss dokumentiert.

Danke - habe das bei mir recht einfach auf den ESP8266 bekommen!

Bei mir ist ein UVR610K im Einsatz
https://www.ta.co.at/x2-frei-programmierbare-regler/uvr610k-ohne-display, 
welcher Warmwasser-Ladung und Fußbodenheizung für eine enerboxx premium 
Hybrid regelt (dezentrale Warmwasserbereitung im Mehrfamilienhaus)
https://pink.co.at/enerboxx-hybrid/

Zudem hängt am DL-Bus noch ein Raumsensor RAS+DL 
https://wiki.ta.co.at/RAS%2BDL (wird nur für Werte-Anzeige genutzt sowie 
um die Warmwasserbereitung an- bzw. abzuschalten, im Urlaub z. B.)

Die Sensorwerte 1-5 sind gefüllt, alles andere ist leer.
Sensor2 ist für mich der wichtigste Wert (Temperatur Brauchwasser).

Interessant wäre, ob man durch den ESP auch die Freigabe der 
Brauchwasser-Ladung realisieren könnte.

: Bearbeitet durch User
von Chris M. (christoph_m988)


Lesenswert?

Chris schrieb:
> Hi Thomas,
>
> der Volumenstrom liegt auf jedem Fall auf dem Bus, allerdings habe ich
> die Protokoll-Auswertung nicht erweitert (mangelnde Zeit und Kompetenz).
>
> Bzgl. ESP32:
> Habe ich nicht versucht, gehe aber davon aus, dass das jetzt auch
> funktionieren wird.
>
> VG
> SL

Hat das jemand geschafft, den sensorwert vom Bus zu lesen oder gar neue 
sensorwerte auf den Bus zu schreiben?

Auch wäre es interessant zu wissen, was der Wert „WMZ1currentPower“ 
bedeutet.

Hat hier jemand mehr Infos?

von Oliver S. (oliverso)


Lesenswert?

WMZ1currentPower bedeutet mit Sicherheit genau das, was da wörtlich 
steht.

Oliver

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.