Ich möchte die ETH 200 Comfort Thermostate vom uC aus ansteuern. Dazu
habe ich mir mal das Protokoll näher betrachtet.
7E - 6 Datenbytes - 16bit crc oder checksumme
mir fehlt nur die Idee wie die CRC berechnet sein könnte, hier mal ein
Satz der Datentelegramme:
7E 00 00 00 03 42 00 c2 16
7E 00 00 00 03 85 00 60 91
7E 01 10 00 00 42 00 C3 24
die 42 00 bzw 85 00 sind die Steuerbefehle. Byte 1 ein Zähler Byte2-4
die Seriennummer.
die letzten beiden Bytes sind die Checksumme. Es ist etwas mühsam durch
probieren die richtige Checksumme zu finden, hat jemand eine geniale
Idee wie sich die Checksumme zusammensetzt???
Gruss
diwe
Vielen Dank an alle die geholfen haben das Protokoll der ETH Comfort 200
Funkthermostate und Fensterkontakte zu entschlüsseln.
Die Fensterkontakte übermitteln auch noch periodisch den Schaltzustand
(sofort,und dann alle 10min) und den Batteriestatus
@spark11
die Frequenz ist 868.3MHz und ist FM moduliert, also bestens geeignet um
mit dem RFM12 zu kommunizieren
sorry, hab den Anhang vergessen
das Protokoll ist Machester codiert
0x7e zz ll aa aa aa cmd crc crc
zz ist ein fortlaufender Zähler
ll die Blocklänge 10,20,30 (20 = 9 Byte, 10= 10Byte ,30=??)
aa 3 Byte Adresse
cmd der Befehl
crc 16 bit checksumme
die Reihenfolge der Bits im Byte ist verdreht.
FeliX
Hi Felix
es gibt da noch ein paar kleine Details.... da 7e die Startbedingung im
Protokoll ist darf diese nicht in den Daten vorkommen, dies wird
verhindert in den nach 5 1-en eine 0 eingeschoben wird, diese muss nach
der Manchesterdecodierung beim Empfang wieder entfernt werden.
....Ausserdem sieht es so aus als ob es verschiedene Startwerte für die
CRC Berechnung gibt. Als mask im CRC dient 0x8408. Weiterhin gibt es
auch codes welche 31 bzw 32 als Blocklängenkennung haben. (11 bzw 13
Bytes lang). Schade dass ELV so rein gar nichts zu dem Protokoll
herausgibt, die ETHs sind eigentlich schön für die Hausbusanbindung.
weshalb die bits verdreht sind verstehe ich auch nicht, stimmt aber,
denn nur dann macht der Zähler an Byte 2 auch einen Sinn.
Der Fensterkontakt kennt nur 4 Befehle 40(Fenster zu) 41(Fenster auf)
c0(Fenster zu Batterie leer)c1(Fenster auf Batterie leer)
tschüß
Hi,
womit habt ihr den Datentraffic mitgeschnitten? Ich habe mir auch ein
paar EHT200 zugelegt und würde nun gerne das ganze (und mehr) vom PC aus
steuern. Hat sich mal jemand den USB Stick zu diesem System angeschaut?
Könnte man diesen nicht auch für andere System missbrauchen?
Gruss
Hallo,
gibt es schon neue Erkenntnisse zu dem Teil? Ich versuchte grade einmal,
den zu der Serie gehörenden Raumthermostat / Ausstentempratursensor mit
einem RFM12 zu "belauschen", allerdings recht erfolglos...
cu - Arndt
Was brauchst Du denn für Infos, es steht doch im Prinzip schon alles
hier im Thread,
Ich steuere die ETH200 mit einem RFM12 an und habe auch ein RFM12 an
einem STK500 als Monitor für das Funkprotokoll.
Die Daten sind zunächst Manchestercodiert, nach dem decodieren musst du
dann zunächst nach dem 7e suchen, das ist das Startbyte, anschließend
die Eigenart mit den 5 einsen korrigieren folgen 5 einsen muss die
nachfolgende 0 entfernt werden somit wird aus 01111101 eben wieder die
01111110 also die 7e. Die Daten stehen rückwärts drinnen und am Schluss
folgt ne checksumme. Wenn Du willst kann ich ja das Programm für den
HF-Monitor Dir zukommen lassen.
Gruß
Dietmar
Hallo,
nun, ich habe nicht die ETH200 hier, sondern den dazu gehörenden,
zusätzlichen Thermostat. Nach dessen Beschreibung koppelt man diesen mit
einer ETH200, und dieser wird dann über den Thermostaten gesteuert (der
Thermostat im ETH200 dient dann nur noch als Backup). Ich würde den
Thermostaten gern mit einer eigenen Steuerung koppeln, ich müsste also
eine ETH200 "simulieren". Zu dem Thermostaten gehört auch ein
Aussenthermometer, das über Funk an den Thermostaten gekoppelt wird.
Also versuchte ich, die Koppelsequenz zwischen den beiden Geräten zu
"belauschen", aber die RMF12 liefert keine Daten - gesendet wird aber
was, per Scanner sind die Datenpakete gut hörbar. Von den RMF12 habe ich
hier schon ein paar erfolgreich im Einsatz, aber scheinbar gelingt mir
die Einstellung der RFM12 nicht, oder die Frequenz liegt daneben...
jedenfalls kommt nix raus.
Das wäre klasse, wenn Du mir das Monitorprogramm zukommen lassen
könntest, vllt wird mir dann klar was ich mit dem RFM12 falsch mache.
Und herausfinden, wie die Geräte gekoppelt werden.
cu - Arndt
Hallo zusammen,
auch mir schwebt vor, ein ETH200 per RFM12 am µC zu steuern. Der
grundlegende Aufbau der Datentelegramme ist in diesem Thread ja
beschrieben. Vielen Dank dafür!
Doch kennt jemand die Bedeutung der in den Telegrammen enthaltenen
Steuerbefehle? Einfach gesagt: Ich möchte per Funk beispielsweise ein
ETH200 auf 21 Grad Solltemperatur einstellen. Welche Steuerbefehle muss
ich dafür schicken?
Ich würde mich freuen, wenn mich jemand darüber aufklären könnte.
Dietmar, vielleicht kannst Du ja auch einen entsprechenden Auszug aus
Deinem Programm posten?
Grüße
Pete
Hi,
ich beschäftige mich zur Zeit auch mit den ETH200. Könnte mir mal bitte
einer die Initialisierung des RFM12 schicken mit dem ich den Funk
mitschneiden kann ? Benutzt Ihr den FIFO ? Wird FSK- oder OOK-Modulation
verwendet ? Baudrate ?
Danke
Stefan
Hallo Stefan
Frequenz 868,3
Modulation FSK
Hub +/- 15kHz
Datenrate 10kbit Manchester
kein Fifo nutzen, da Manchester signal von Hand decodiert werden sollte
da Datenrate nicht sehr konstant
wenn Du einen rudimentären Code zum Empfang benötigst PM an mich.
Gruß
Dietmar
Ich wäre auch sehr interessiert an dem Beispielcode da ich es selbst
nicht schaffe das RFM12 richtig zu initialisieren.
Noch eine Frage zum RFM12: Es gibt eine 433MHz und eine 866MHz-Version
bei Pollin zu kaufen. Soweit so gut. Zusätzlich kann man aber auch über
die Software das Band 433MHz/866MHz wählen. Kann ich also auch ein
RFM12-433MHz mit der 866MHz Konfiguration zur Kommunikation mit dem
ETH200 nutzen?
Danke, Daniel M
Hallo!
Danke an alle die hier Informationen zum ETH Comfort bereitgestellt
haben.
Mit dem Beispielcode habe ich es geschafft, einen Fensterkontakt mit dem
RFM12B auszulesen. Ich verwende dazu die mbed-Plattform (www.mbed.org)
Ich habs vorher vergeblich mit einem RFM22B versucht, hab aber dort
nichts empfangen können. Bei Gelegenheit werde ich es nochmal mit den
neuen Infos versuchen. Eigentlich müsste der RFM22B das Telegramm auch
empfangen können.
Ein decodiertes Telegramm sieht bei mir z.B. so aus:
1
-----------------------------
2
7E 0D 20 00 21 77 41 67 15 CRC: 6715 OK
3
Counter: 0D
4
Dev-ID: 00 21 77
5
Window : OPEN
Ich werde das jetzt dazu verwenden, die ETH-Comfort-Fensterkontakte an
meinen EIB-Hausbus (www.freebus.org)anzubinden.
@daniel_m:
Ich würde 866MHz und 433MHz nicht mischen. Die Chips sind die selben,
daher auf beide Frequenzen programmierbar. Aber das restliche Design der
Module ist auf die jeweilige Frequenz abgestimmt.
LG Charly
Hi,
wenn zusätzlich noch die Batterie schwach ist wird aus 41 c1 bzw aus 40
c0.
Es wäre schön wenn hier die verschiedenen Lösungen welche entstanden
sind als Code veröffentlicht werden, ich hab meinen rudimentären Code
zur Kommunikation mit dem ETH200 angehängt.
Vielleicht könnte jemand noch die Kommunikation mit dem USB Prog.stick
entschlüsseln...
Gruß
Dietmar
Hallo,
Da mir die ETH Funkwandthermostate ganz gut gefallen, habe ich mir
überlegt damit meine Fußbodenheizung in den verschiedenen Räumen zu
regeln. Als Empfänger von 6 "RaumControllern" soll ein Eigenbau diese
Funktion übernehmen. Vieleicht kann mir der eine oder ander eine
Hilfestellung geben.
Wenn jemand andere oder bessere Raumcontroller kennt, würde ich gerne
diese Erfahrung teilen. Vieleicht hat jemand auch schon einen eigenen
RoomController entworfen ?
lg Thomas
Arndt / Dietmar,
ich fange jetzt erst mit den ETHs rumzuprobieren. Es ist finde ich eine
sehr gute Basis. Von meiner Seite will ich auch die Heizung mit der
gleichen technik steuern. Ich habe bei komforthaus.de gesehen, dass es
dort verschiedenes gibt wie beispielsweise Zirkulationspumpensteuerung
oder Servomotorensteuerung.
Zu meiner Frage, habt ihr eure Erkentnisse irgendwo in iner Wiki
hiterlegt? Ich habe zum thema reverse eng. ein paar schon davon gesehen.
Wie auch immer.
Ich wäre sehr an dem Programm interessiert. Ich hoffe, dass es auch auf
einen Mac oder Linux portierbar ist. Später werde ich das ganze auf ein
arduino packen. Dafür muss es aber am Mac oder Linux stabil und
verlässlich funktionieren.
ps. Ich steige wieder in diese Themen ein nach einer beruflich bedingten
Pause von etwa 7 Jahren. Bitte entschuldigt wenn ich zu penetrant bin.
:-]
Cheers,
J
hallo,
ich häng mich da jetzt auch rein, ich muss innerhalb einer Woche die
Kommunikation zwischen ETH200 und RFM12 zum laufen kriegen, da dies mein
Abschlussprojekt für den Techniker wird.
@Dietmar: Der Code iss ziemlich verteilt und ich tue mir noch bissl
schwer ihn zu verstehen. Wenn du Lust und Zeit hast, könntest du mir
vielleicht eine kurze Beschreibung zu deinem Code geben (Ablauf in
Stichworten)
Fortschritte werde ich hier veröffentlichen.
Gruß
Michael
Tag1:
so ich bin jetzt dabei, oder besser ich versuche jetzt mit dem RFM12 die
Kommunikation zwischen dem Wandregler und dem ETH200 abzuhören. Ich
komme kein Stück weiter. Ich habe FIFO aus und häng mich mit dem Logic
Analyzer an den Port DATA und DCLK vom RFM12 und da seh ich nix gar nix.
Der Wandthermostat sendet auch nicht immer sofort nachdem ich eine
Temperatur eingestellt habe (Zufallsprinzip ?)
Gibt es noch einen Trick wie ich am DATA-Port Daten entlocken kann ?
ich habe das RFM12 Modul wie folgt konfigueriert und gehe dann in eine
Endlosschleife ( while(1){} )in der nichts gemacht wird. Einfach um zu
sehen was der LA mit anzeigt. Im Anhang ein Mitschnitt des LA.
Hallo Michael!
Ich hab mit dem Code von Dietmar relativ schnell die Daten des
Fenster-Kontaktes mitlesen können. Sollte also auch bei dir
funktionieren.
Der DATA-Pin sollte immer ein Signal ausgeben. Wenn niemand etwas
sendet, dann eine zufällige Signalfolge - Rauschen eben.
Also dürfte bei dir der Anschluss oder die Initialisierung nicht korrekt
sein.
Ich habe mir deine Initialisierung nicht im Detail angesehen, aber mit
der von Dietmar hats bei mir funktioniert!
Möglicherweise hilft dir das
http://mbed.org/users/charly/notebook/connecting-a-radio-window-shutter-contact-to-knx/
- ich hab den Code auf die MBED-Plattform portiert und etwas bereinigt.
Aber fertig ist das auch noch nicht.
LG Charly
Hallo Charly,
ich habe jetzt die Initialisierung aus Deinem Projekt verwendet. Nur die
Initialisierung um zu sehen was am RFM12 rauskommt. Im Anhang ein
Mitschnitt vom LA, ohne das hier irgendetwas sendet. Ich vermute mal das
das was ich da sehe das Rauschen ist. Habe ich noch eine Möglichkeit das
weiter zu filtern ?
Wie hast du den DATA und DCLK Pin verdrahtet ?
Hallo Michael!
Das Data-Signal sieht jetzt so aus wie bei mir. Wenn jemand sendet,
sollte sich das Signal wesentlich unterscheiden und ziemlich konstante 0
und 1 folgen ausgeben.
Den DCLK-Pin habe ich überhaupt nicht angeschlossen. Das Signal wird nur
über den DATA-Pin auf einen Interrupt-Eingang am Controller gelegt. Der
löst bei jedem Wechsel (also raise und fall) einen Interrupt aus. Das
decodieren usw. macht die Interrrupt-Service-Routine (ISR() bei mir).
Im Anhang einen Screenshot des DATA-Signals, während mein Fensterkontakt
sendet.
LG Charly
Hallo Charly,
Bei mir sieht das Signal aus wie von meinem Screenshot vom 9.3. , wenn
keiner sendet :-(
Ich habe Deine Initialisierungsroutine verwendet. Ist das bei euch auch
so, oder habe ich hier in der Nachbarschaft Jemand der ständig sendet ?
Wenn Du ein ein weiteres RFM12 Modul als schwachen Dauer-Sender benutzt,
am besten ohne Antenne, kannst Du das Rauschen wegdrücken, dann kannst
Du besser mit dem LA das Protokoll ansehen.
Gruß
Dietmar
Hallo Dietmar,
danke für den Tipp. Ich habe gestern Nacht nach einer Einstellungsorgie
für den Funk ein "sauberes" Signal erhalten. Besser kann's glaub ich
nicht sein !
Jetzt mach ich mich noch ans dekodieren und dann passt's hoffentlich.
Dann sollten ich die Übertragung zwischen Wandthermostat und
Heizkörper-Regler haben und nächste Woche erhalte ich noch einen
USB-Programmer für den ETH200 dann schau ich mir den noch an.
schönes WE
es ist zum verrückt werden.
Heute Morgen meine Testumgebung gestartet. Nix, keine Daten zum
auswerten.
Jetzt habe ich wieder am Receiver gefummelt und es geht wieder , aber
ich versteh's nicht.
Mit diesen Einstellungen lief es heute Nacht :
;RFM12 - Receiver Control Command
;p20 : 0=INTin, 1=VDIout = 1
;VDI response time = Fast
;Receiver bandwidth = 200 kHz
;LNA gain = 0 dB
;RSSI threshold = -97 dBm
9481
und jetzt mit diesen :
;RFM12 - Receiver Control Command
;p20 : 0=INTin, 1=VDIout = 1
;VDI response time = Fast
;Receiver bandwidth = 67 kHz
;LNA gain = 0 dB
;RSSI threshold = -73 dBm
94C5
Kann mir mal bitte Jemand RSSI, LNA , Bandweite und VDI erklären ?
Ich dachte RSSI ist für die Schwelle um eine 1 oder 0 zu erkennen oder?
Wie spielen diese Parameter zusammen ?
Viele Grüße
Michael
Bandweite:
ergibt sich bei FSK Modulation aus BWmin.= 2* Datenrate + 2*Hub
in diesem Fall 2*10kHz + 3*15kHz = mindestends 50kHz. Allerdings musst
Du noch die Drift, bzw Toleranz des Quarzes einrechnen, 200kHz ist O.K.
je breiter die Bandbreite desto mehr Störungen bekommst Du rein, es gilt
pro Faktor 10 bekommst Du 10dB mehr Rauschen, zusätzlich steigt die
Wahrscheinlichkeit, dass ein benachbarter Sendekanal Dein Empfang stört
Lass die Bandbreite auf 200kHz, 67kHz ist schon etwas knapp.
RSSI Threshold: die Schwelle ab welcher der Detektor versucht FSK Daten
zu finden. Je kleiner desto Empfindlicher der Empfänger. Bei -73dBm
solltest Du fast kein Rauschen am Datenpin sehen, allerdings ist dein
Empfänger auch wesentlich unempfindlicher (6dB ist eine Verdopplung des
Abstandes, sofern noch keine Begrenzung durch das Rauschen stattfindet)
LNA Gain: Vorverstärker, hier kannst Du bei Starken Signalen das Signal
abschwächen, bzw verstärken. Starke Sender können bei LNA =0dB den
Empfänger übersteuern.
Gruß Dietmar
wenn es heute Nacht mit -97dBm RSSI und 200kHz Bandbreite lief und heute
morgen nicht heist das, dass Du einen Störsender hast welche Nachts
nicht aktiv war. RSSI würde ich so in den Bereich -90dBm legen,
bandbreite bei 200kHz.
Problem ist, wenn Du einen Stör-Sender hast welcher knapp im Band liegt
also innerhalb der Bandbreite aber nicht mittig, zieht die AFC die
Frequenz des Empfängers auf diese Frequenz, sollte dies eben ein Störer
sein, kann es sein, dass Du ein wesentlich größeres Signal benötigst um
Dein Nutzsignal zu finden, hier hilft dann ein Neustart des Empfänger
eventuell um den Suchlauf der AGC neu zu starten.
Der RFM12 beinhaltet auch noch ein Antennentunig, diese geht aber nur
beim Senden, deshalb zuerst Senden dann auf Empfang schalten.
Ich hab mir noch Dein Signal am LA angesehen, das sieht aber alles
andere als nach gültigen Daten aus! Du musst ein Signal mit 50%
Tastverhältnis sehen. Stimmt Deine Frequenz und die Einstellung für die
Lastkondensatoren des Quarzes?
Gruß Dietmar
Hallo Dietmar,
vielen Dank für deine ausführliche Antwort. Ich habe als Frequenz die
Einstellungen übernommen :
writeCmd(
RFM_CONFIG_BAND_868 |
RFM_CONFIG_X_11_0pf
);
// 3. Frequency Setting Command
writeCmd(
RFM_FREQUENCY |
RFM_FREQ_868Band(868.30)
);
Aber ich bekomme kein sauberes Signal. Ist zum heulen. was steht denn
bei euren RFM12 Modulen auf der Rückseite ? Bei mir steht hier RFM12S
REV3.0
Der Tipp mit dem Dauersender hat geholfen, damit wurde das RAuschen
minimiert. Aber sobald ich den abschalte, beginnt der DATA-Pin wieder
wie wild zu toggeln. Ich glaube ich scheitere an dem Projekt.
Viele Grüße
Du wirst mit dem Rauschen leben müssen.... Sofern die Dekodierung
richtig funktioniert ist das Rauschen kein Problem, Du musst nur die 7E
im Rauschen erkennen. Versuch mit dem Füllsender das Rauschen zu
eliminieren, wenn dann Deine Dekodierung funktioniert sollte es auch mit
Rauschen funktionieren. Ich habe das gleiche Modul wie Du und bei mir
geht es mit meinem Programm .
Die Einstellung für Frequenz und Lastkapazität sind o.k.
Nimm doch mal ein STK500 o.ä. lade meinen Code drauf, hänge den DataPin
an INT1, CS an PortB4, Miso, Mosi an das Modul und probiere ob es nicht
geht...
Hallo Dietmar,
also ich habe jetzt noch einen 3nF Kondensator zwischen CFIL und GND
gelegt und dazu noch meinen Dauersender der alle 500ms sendet. Jetzt
kann ich zumindest das Signal vom ETH sehen. Ich habe hier kein STK500.
Ich arbeite mit einem ET-AVR Board mit 16Mhz und einem Atmega128. Ich
muss also Deinen Code an meinen 128er anpassen , gerade die Timer und
INTs. Im moment habe ich noch das Problem der Manchester decodierung.
Ich werde jetzt Stück für Stück die lon.c an meinen ATMega anpassen.
Gruß
Michael
Hallo oder besser Hilfe,
ich benötige starthilfe für das Dekodieren des Manchester Signals. Ich
bin mir nicht ganz klar darüber wo der Bitstream mit den 7e beginnt.
Wie würden denn die 7E in Manchester Codierung aussehen ?
So wie ich das verstanden habe, ist eine Periode wie im Bild dargestellt
von 1 bis 2 in meinem Fall ca. 200ns . Ich zähle die Anzahl
Flankenwechsel zwischen 190ns - 220ns . habe ich nur 1 Flanke, kommt es
zum Bitwechsel, d.h. statt der 1 kommt nun die 0. Habe ich 2 Flanken
bleibt es entweder bei der 1 oder der 0.
Die Bits die ich decodiere schiebe ich in eine 8bit breite Variable und
shifte jedes bit hinein und checke auf 7E. Ab dann werden max 10 byte
gesammelt und geschrieben. Ich bin jetzt in der Routine noch nicht auf
die Besonderheiten mit den max. 5x 1 hintereinander und der 0 die dann
eingeschoben wird......
Ich habe jetzt auch in meiner Ausgabedatei bemerkt, dass er mir dort die
Werte zu dem Shiftregister falsch ausgibt und das 2. Byte immer 10 statt
8bit hat. ich hänge die Datei mal mit an.
Bin jetzt nicht der C Profi und könnte mir gut vorstellen, dass man hier
und da noch einiges am Code verbessern könnte.
Vielen Dank und gn8
1
ISR(INT0_vect){
2
//b=TCNT1; // Timerwert 16Mhz. 16 Takte pro ns
3
//new = ((PIND & 0x01) != 0); //Debug
4
5
State++;//Flankenwechsel zählen
6
7
if(TCNT1>3040&TCNT1<3520){// In dem Zeitfenster muss was gültiges kommen
8
9
if(State==2){
10
// Bitwechsel !
11
if(NullorOne==1)
12
NullorOne=0;
13
else
14
NullorOne=1;
15
}
16
17
18
// nur wenn 2 oder 3 Flanken aufgetreten sind haben wir Daten !
19
if((State==2)||(State==3)){
20
if(NullorOne==1){
21
shiftRegister=(shiftRegister<<1)|0x01;
22
PORTA=(PORTA<<1)|0x01;// Debug
23
}
24
else{
25
shiftRegister=shiftRegister<<1;
26
PORTA=PORTA<<1;//Debug
27
}
28
if(shiftRegister==126)
29
found=1;//7E gefunden
30
31
if(found==1){
32
// da wir den init gefunden haben nehmen wir jetzt immer 8 Bit in ein Byte ;)
33
if(NullorOne==1){
34
strcat(Messagetxt[irrh],"1");// String für die UART Ausgabe
35
}
36
else{
37
strcat(Messagetxt[irrh],"0");// String für die UART Ausgabe
Hi,
Scanner funktioniert , aber das senden will nicht so richtig.
Wie steuert ihr die RFM12-Module an um zu senden ? über den FSK/DATA-PIN
zeitlich gesteuert oder ?
Übrigens habe ich in meinem Mittschnitt von dem Raumthermostat auch
Längenbytes mit 30,31,33 gibt es hierzu was neues ? Die 33 scheint für
den Anlernprozess zu sein.
Gruß
Hat noch Jemand die Funkthermostate in Betrieb ?
Als Präambel werden 2x 0x55 und 2xAA gesendet aber auf dem Empfänger
sieht das nicht danach aus. Mir ist noch immer nicht klar wie der RFM12
Manchester macht. Im Anhang habe ich noch einen Screenshot vom LA,
beginnend mit 0x55,
sieht aber auf dem Screen anders aus :-(
Wie macht der RFM12 Manchester ?
Hallo @all,
kann man eigenlich auch die von den Heizungsreglern "Comfort x00"
gemessene Temperatur abfragen bzw. senden diese die als Antwort auf
einen Befehl? Oder ist die Verbindung nur eine Einbahnstrasse vom
Wandthermostat zum Regler?
Vielen Dank
rhb
Nabend,
habe ich die Möglichkeit irgendwie festzustellen, ob statt FSK ASK
benutzt wird ? Ich habe mir die Initialisierung des AX5131/AX5151
angeschaut und da wird nirgends die Modulationsart eingestellt und
Standard ist ASK Shape , wofür steht das Shape ?
Gruß
frohe Ostern !
gibt es noch Jemanden hier der Pakete mitgeschnitten hat ? Senden
funktioniert bei mir soweit, allerdings habe ich Probleme, wenn ich die
Seriennummer ändere oder die Temperatur senken möchte. Mich würde auch
interessieren ob bei der Fernbedienung die Paketlänge immer 10 ist.
Ich habe auf der Grundlage von Dietmars Code einen für mich einfacheren
Code erstellt, siehe Anhang.
Die Funktionen rfsend, rfinit, switch2RX und writeCmd sind Funktionen um
das
RFM12 zu steuern und müssen je nach Bibl. die du für den RFM12
verwendest angepasst werden.
Gruß
Hallo!
Ich suche ein Minimalbeispiel zum Senden.
Ich probiere mich nun auch an der Steuerung der Heizungen. Das Empfangen
klappt nach einigem Hin und Her nun tadellos. Danke an alle, die hier
ihre Einstellungen veröffentlich haben. Ich werde meine Erkenntnisse
über das Protokoll bald in einen Wiki-Artikel fließen lassen.
Leider habe ich keinen Erfolg beim Senden. Mir fehlt leider auch das
entsprechende Testequipment. Kann mir jemand ein Minimalbeispiel
schicken, das bei ihm funktioniert? Ein Programm das (auf dem Pollin
Funk-Eval-Board mit einem RFM12) einen fest eincodierten ETH-Befehl
sendet, sollte ja nicht mehr als 50 Zeilen benötigen. Aber wie gesagt:
Ich scheitere daran.
Vielen Dank für Eure Hilfe
Hallo,
ich hab zu dem Thema Heizungsregelung mit der ETH comfort Reihe mal eine
Frage.
Ich würde gerne bei meinen Eltern das System so einsetzen das mit dem
ETH comfort 200 eine Heizung gesteuert wird. Allerdings keine normale
Heizung (sonst würde ich hier ja nicht schreiben :-)) sondern eine
Nachtspeicherheizung.
Meine Idee wäre folgende : An dem Stellmotor des ETH comfort 200 ein
Poti anschließen um die Stellgröße erstmal mitzubekommen. Dann über
dieses Poti mittels einer Elektronik ein Relais den Lüfter der
Nachtspeicherheizung ansteuern lassen um ein "proportionales" Verhältnis
von Stellggröße zu Lüfterlaufzeit zu haben. Würde das so funktionieren ?
Müsste doch so machbar sein oder ?
Rene B. schrieb:> Meine Idee wäre folgende : An dem Stellmotor des ETH comfort 200 ein> Poti anschließen um die Stellgröße erstmal mitzubekommen.
Das wird leider nicht funktionieren, denn das Thermostat verweigert mit
einer Fehlermeldung die Arbeit, wenn es bemerkt, dass es nicht an einem
Heizkörper steckt.
@mh
aber wie soll der Theromstaten erkennen das er an einem Heizkörper
steckt ? Das kann dann doch bestenfalls nur ne mechanische Sache sein
die sich dann irgendwie überlisten lassen sollte, oder ?
Hallo Rene,
wäre es nicht einfacher 2 RFM12 zu nehmen und am Empfänger über PWM den
Lüfter zu steuern ? Da sparst du dir das Thermostat.
Ich habe bei mir das Sendemodul (RFM12 + Atmeg128 + RS232) mit dem PC
verbunden und eine kleine Weboberfläche programmiert. Darüber kann ich
dann alle Thermostate bzw. in deinem Fall alle RFM12 ansteuern.
Das ETH200 macht 1x pro Woche eine Referenzfahrt um die Stellgröße zu
ermitteln. Wenn da etwas nicht passt geht der Thermostat in Störung.
Gruß
Michael
@michael
Sowas in der Richtung hatte ich auch schon überlegt. Dachte nur das es
vllt einfacher wäre den ETH comfort200 zu modifizieren. Aber ich glaube
m.h. hatte recht. Dadurch das der Fahrweg des Ventils überwacht wird
(was du mit der Referenzfahrt meintest) dürfte das Probleme geben. Wird
wohl wirklich einfacher sein sich per RFM12 auf das Protokoll zu hängen
und quasi einen comfort200 zu "simulieren" (wenn ich das richtig
verstanden habe) um die Stellgröße dann in eine PWM umzuwandeln.
Also quasi ein ETH Funk Wandthermostat mit einem RFM12-PWM-Umsetzer als
comfort200-"Fake" zu realisieren.
Meintest du das so ?
@Rene
Vergiss einfach das ETH200 und Protokoll , etc.
Was ich an Deiner Stelle machen würde, wären 2 Platinen mit je einem
µController + RFM12 + je nachdem wie du alles steuern möchtest an dem
Sender noch eine RS232 Schnittstelle.
Am Empfänger (Stellglied) würde ich noch einen TempSensor einbauen,
damit du auch die Ist-Temperatur ermittelt kannst. Vom Sender (über PC
oder wie auch immer) sendest du über den RFM12 und da gibt es kein
fertiges Protokoll sondern da machst du Dein eigenes, die
Soll-Temperatur an den enstprechenden Empfänger (Ich denke du hast
mehrere Heizungen) und die eigentliche Regelung übernimmt dann der
Empfänger mittels Tempsensor und PWM für den Ventilator.
Ich hoffe das war verständlich. Wenn du natürlich nur 1 Heizung steuern
möchtest, würde ich ganz auf die RFM12 verzichten und die
Tempeinstellung direkt an der Heizung vornehmen.
Viele Wege führen nach Rom ;)
@Michael
Ok, also ein ganz eigenes System sozusagen. Das wäre die andere
Alternative :-)
Na ja. Mal schauen. Ein eigenes System hätte auch was für sich. Wenn man
dann noch mittels AVR-ETH-IO einen kleinen Web-Server implementiert wäre
eine komfortble Heizungssteuerung möglich. Dann noch die Funksteckdosen
für Beleuchtung fernsteuern ... :-)
Ich schau mal. Aber danke schonmal für die Tips.
Michael W. schrieb:> Ich habe auf der Grundlage von Dietmars Code einen für mich einfacheren> Code erstellt, siehe Anhang.>> Die Funktionen rfsend, rfinit, switch2RX und writeCmd sind Funktionen um> das> RFM12 zu steuern und müssen je nach Bibl. die du für den RFM12> verwendest angepasst werden.>> Gruß
vielen Dank für den Code. Mich würde Interessieren ob hier jemand in der
Lage ist für Ethersex entsprechend ein "Plugin" oder so zu schreiben
damit ich in Verbindung eines Polling NET-IO Board und Ethersex ganz
einfach einzelne Thermostate steuern kann.
Hallo Leute, ich bin auch am rumspielen mit ETH 200 von ELV. Ich lese
die Übertragung von einer Fernbedienung über eine Schaltung mit PIC16F88
über RS232 aus. Wenn ich die Sonne auf der Fernbedienung drücke empfange
ich folgende Nachricht. 7E 01 10 01 2B 20 42 00 FA C6
Ich verstehe das aber mit der CRC Prüfsumme nicht, habe das erste mal
mit CRC zu tun und habe alle bekannten Seiten durchforstet und alle
bekannten online Rechner für CRC ich komme aber nie auf das Ergebniss.
Oder habe ich was beim Empfangen falsch gemacht? Kann mir jemand so
Einfach wie möglich erklären wie das berechnet wird, bitte in Klartext
mit Beispiel mit Code in C oder so verstehe ich es nicht. Ich weis das
die Beiträge schon älter sind aber vielleicht ist doch noch jemand aktiv
dabei.
Danke und LG Buzii
Wie schon oben erwähnt, ich habe es in alle Online CRC Rechner
eingegeben und komme nie auf das Ergebniss. Was mache ich denn mit denn
Syndromwort? Gibt es eine Seite die die CRC Berechnung ganz einfach
erklärt, so richtig verstehe ich es nicht.
Iceland schrieb:> Es ist ein reverser 16Bit CRC, das steht im Code, das Syndromwort ist> auch angegeben, was möchtest Du noch wissen???
Du weisst aber schon wobei es sich bei einem Syndromwort handelt?
Hallo Iceland, habe ich das richtig verstanden das reversen CRC bedeutet
das die Bits pro Byte verdreht werden, also wird z.b. 0D zu B0?
Im Moment nehme ich die Daten z.B. 7e 0d 20 00 21 77 41 00 00 (wurde
oben als bsp. gepostet) wandele sie in Binär um und drehe die Bits im
Byte. Dann berechne ich mit XOR und 0x8408. Muss ich dann denn Rest der
übrig bleibt wieder drehen oder nicht. Im Moment versuche ich es von
Hand, was sehr aufwendig ist, aber ich weis mir auch nicht mehr zu
helfen.
Ja genau so geht es (XOR & Schieben der gedrehten Bits), das Ergebnis
muss soweit ich noch weiß nicht mehr gedreht werden.
Schreib Dir doch ein kleines C-Programm von Hand ist das doch echt
mühsam.
Seit Tagen rechne ich hin und her und bekomme es nicht hin. Ich weis
nicht was ich falsch mache, könnte sich jemand die Berechnung in Exel
ansehen, vielleicht fällt euch was auf??? Ich bin schon am verzweifeln,
das kann doch nicht so schwer sein!!!
Danke
{crc=(crc>>1)^mask;}// nur wenn das niederwertige Bit aus dem XOR zwischen crc und c eine 1 hat
8
elsecrc>>=1;
9
c>>=1;
10
};
11
return(crc);
12
}
c = 7E = 00000000 01111110
crc = 0 = 00000000 00000000
mask = 84 08 = 10000100 00001000
Es wird in einer Schleife jedes Bit von C durchlaufen
und ein XOR mit CRC und C durchgefürt:
00000000 00000000
00000000 01111110
if(01111110 & 1) (binäres UND, niederwertigste Bit wird verglichen
also)
0111111 0
0000000 1
= 0
da die if nicht true ist wird der else-Zweig fortgesetzt.
crc>>=1 shiftet crc um 1 bit nach rechts
also in diesem Fall bleibt es bei 00000000
und danach wird
c>>=1 01111110 um 1 geshiftet daraus wird dann
00111111
im zweiten lauf ist die if Bedingung true und es wird folgendes gemacht
crc>>1 schiebt wieder um ein Bit und macht dann ein XOR mit der MASK
in dem Fall mit
00000000 00000000
10000100 00001000
und jetzt wird das erstemal crc einen Wert zugeordnet
10000100 00001000
usw.
Es ist noch früh am Morgen, also erstmal keine Gewähr aber es sollte
doch im Groben so passen ;)
Wenn du dir mit den Bitoperationen nicht so sicher bist , schau dir das
mal an:
http://www.oreilly.de/catalog/cplus2ger/chapter/ch11.pdf
Hallo Michael, vielen dank für die sehr ausführliche Anleitung. Ich
programmiere immer nur Assembler und verstehe die C Sprache nicht. Ich
war auch schon dabei (sehr mühsam) denn Code Schrittweise zu betrachten
und verstehen, aber ohne deine Hilfe hätte ich es nie hinbekommen. Wenn
ich das richtig sehe wird, wenn das Unterprogramm aufgerufen wird, crc
mit 0xC11F geladen, ist das richtig? Egal ob ich mit 0 oder C11F rechne
komme ich nicht auf das richtige Ergebnis. Ich habe auch AVRStudio 5
installiert, bekomme aber denn Code nicht zum laufen und wenn ich ihn so
ändere das er läuft, bekomme ich in Watch die Werte nicht angezeigt.
Irgendwie komme ich einfach nicht weiter!!!
LG Buzii
Es hat sich gerade erledigt, der Fehler war das es unterschiedliche
Startwerte für denn CRC gibt. Bei 7 Bytes beginnt mann mit 0xbdb7 und
bei 8 Bytes mit 0xc11f. Ich habe das Beispiel von oben genommen mit 7
Byte habe aber mit 0xc11f gerechnet. Nach langem hin und her bin ich
aber froh das ich es doch hinbekommen habe und möchte mich noch mal bei
allen bedanken die mir geantwortet haben, besonders Michael. Danke und
Lg Buzii
Ist ein bisschen OT:
Ich suche einen ETH Comfort Wandthermostat mit Außensensor. Hat
vielleicht jemand einen übrig? Der ist irgenwie nicht mehr erhältlich...
Gruß, jayjay
jayjay schrieb:> Ich suche einen ETH Comfort Wandthermostat mit Außensensor. Hat> vielleicht jemand einen übrig? Der ist irgenwie nicht mehr erhältlich...
Hat sich erledigt, bin fündig geworden.
Hi Leute,
ich weiss nicht so recht ob ich einen neuen Thread anfangen soll...
Naja ich schau einfach mal wie die Reaktionen sind ;)
Ich hab ein Problem.. vielleicht auch einfach ein Brett vorm Kopf.. dann
aber schon einige Tage..
ich bewege mein Fensterkontakt.. es wird gefunkt... ich sehe
kontinuierlich ein Rauschen auf dem Data-Pin... wenn nun vom
Fensterkontakt gefunkt wird, ist alles mucksmäuschen still?!?
Aber manchmal sehe ich auch klare Daten.
An den Dämpfungen habe ich ausführlich rumgespielt.. keine Änderung.. zu
99% kommt, wenn gefunkt wird, nix mehr an.
Wo könnte denn das Problem sein... ich habe alle Lötstellen geprüft,
brücken und wackelkontakte ausgeschlossen, die initalisierung geprüft (
wenn ich sie weglassen ist der Data Pin leer ;) ), den interrupt
weggelassen, code minimalisiert...
Ich muss dazu anmerken, das ich keine Ozi besitze und deswegen mein
Line-In der Soundkarte verwende...
Per Debbuging am IC konnte ich auch ohne cheap-Ozi, regelmäßige
interupts feststellen.. bis zu dem Zeitpunkt wo daten durch den Ether
fliegen.
Ich sehe eine kurze Flanke beim Start, dann ist es ruhig auf der
Leitung, und wenn die Luft wieder rein ist, geht das Rauschen wieder
los..
den Data PIN habe ich per 10K auf VCC gelegt, ein Kondensator ist als
Analogfilter vorhanden... Da ich vom Board eigentlich Saubere 3.3v
bekomme, habe ich nicht geglättet. mit Kondensator ist das Rauschen
dumpfer.. effekt ist aber gleich... ob mit widerstand oder ohne, auch da
ändert sich nichts...
Für jeden Tipp währe ich Dankbar ;)
Gruß,
Nico
Hi Michael,
mein Problem ist, dass sobald ein Fensterkontakt funkt, ich nichts mehr
empfange, also das Rauschen ist nicht nur weg, sondern es ist auch
einfach nichts mehr zu sehen, es werden keine interrupts mehr
geschmissen, es passiert nichts mehr....
Nur bei einem von zwanzig Versuchen sehe ich beim funken klare
signale...
Oder anders, da ich ja ne Soundkarte als Ozi verwende: Ich höre
Rauschen, bis ein Fensterkontakt sendet, dann ist es ruhig auf dem Data
Pin, bis der Kontakt fertig ist, dann geht das Rauschen wieder los.
Manchmal allerdings höre ich statt nix, klare "Modem-Signale"... aber
das ist eher ein Zufall (also extrem selten)...
Erst dachte ich an wackel-kontakt oder defektem RFM12-Modul, aber beides
kann ich mittlerweile ausschließen :(
Gruß, Nico
Ich selbst habe mit dem Fensterkontakt überhaupt nichts gemacht. Also du
betätigst den Fensterkontakt und dann kommt am RFM12 nichts an ?
Hast du mal einen Sender mit einem RFM12 aufgebaut um zu sehen ob
überhaupt was ankommt ? Vielleicht auch mal einen Dauersender gebaut der
alle 500ms ein Paket sendet ? Möglicherweise hat der Fensterkontakt auch
eine Sendesperre, wenn er zu häufig in einer gewissen Zeit betätigt wird
sendet er vielleicht auch nicht. Es gibt klare Richtlinien für das
868Mhz Band.
Könnte es auch sein das sich dein RFM12 aufhängt ? Welchen Code
verwendest du ?
Gruß
Hi Michael,
also der Fensterkontakt-Sender sendet jedesmal bei betätigung
(zustandsänderung). das sehe ich am ETH200-Regler.
Und das bei mir am rfm12 nichts ankommt ist ja das Signal!
Also, okay ein bisschen strange ich gebe es zu..
Aber wenn der Fensterkontakt betätigt wird, hört am Data-Pin das
Rauschen auf und es herrscht stille.... für eine kurze Zeit
Und zum Aufhängen des RFM12:
Ohne ein Reset am MC ist das Empfangsverhalten des RFM12 ab und zu (eher
ganz selten) korrekt. (vom Sound her).. Bedeutet:
Fensterkontakt wird betätigt, rauschen am DataPin verscwindet und es
sind "Modem-Ähnliche" signale zu hören...
Eigenartig sag ich nur...
Vom code herr kann ich nur sagen:
Ich verwende eine standart SPI Treiber, mit initalisierungen die hier
oben im Thread bereits verwendet werden... ohne diese kommt auch nichts
am RFM12 an (also datapin ist ruhig)
Sonst nichts weiter, int routine und sonstien schnickschnack habe ich
bereits zum testen / abhören der signale ausgebaut...
Gruß Nico
Achso und noch was:
das Empfangsverhalten ändert sich auch nicht, wenn ich keinen
Kondensator als Analogfilter verwende... wenn der kontakt sendet,
verschwindet das rauschen und es ist absolut still am Data-Pin... bis
der Fensterkontakt aufhört zu senden, dann ist rauschen wieder voll
da...
Ich hab schon überlegt ob der Sender eventuell so stark ist, das alles
überlagert wird, und somit der RFM12 ruhig ist... eigentlich aber doch
unlogisch...
oder vielleicht meint der RFM12 eine gültige FSK Modulation
festzustellen und schaltet den DATA-Pin aus?! geht das?
Ich hasse so eine Ratlosigkeit, will aber auch nicht einfach aufgeben...
Gruß Nico
Also zum Rauschen kann ich nur sagen das ist normal. Sobald etwas
gesendet wird schwingt sich die Empfangeinheit ein und du siehst das
Rauschen nicht mehr. So im Groben hat das mit mal Dietmar erklärt. Das
würde zumindest bedeuten, dass der RFM12 etwas empfängt, aber er gibt
dir nichts am Data-Pin aus.
Überprüfe mal die Baud Einstellung. Ich hatte damals eine Routine aus
dem Netz da war die Baud-Berechnung fehlerhaft ! Hat mich sehr viel Zeit
gekostet da ich an dieser Stelle überhaupt nicht nach einem Fehler
gesucht hatte :(
Ich schau mal ob ich noch meinen Code zum abhören habe.
Gruß
Michael
Guten Morgen :)
Ja, irgendwas liegt halt immer in der Luft, deswegen ist das Rauschen
auch normal ;)
allerdings finde ich es total merkwürdig das rein gar nix mehr kommt, es
also absolut ruhig ist, wenn ein sender anfängt zu senden.
Ich hab gestern Nacht noch die Konfigurationen vom RFM12 studiert.
Irgendwie habe ich die vermutung, das der RFM ein angeblich gültiges
FSK-Signal empfängt und deshalb den FIFO einschaltet und aufjedenfall
den DATA pin abschaltet...
Abstürzen kann ja nicht sein, denn nach dem senden ist das Rauschen
wieder da..
Aber meine Vermutung, würde auch erklären, warum ich manchmal
funksignale sehe... das ist dann, wenn der rfm12 kein FSK signal
sieht... also eventuell das signal so gut ist, das es halt nicht mit
einem FSK verwechselt werden könnte...
Kann jemand dieses verhalten meines RFM12 erklären? Hab ich mit meiner
Vermutung recht?
Tipps, Ideen, Vorschläge?
Schönen Start in die neue Woche
Nico
Hi nochmal,
Die initalisierung schick ich nochmal...
jetzt kann ich aber schonmal ein erfolg verzeichnen!
ich habe AFC ein wenig umkonfiguriert:
0xC443
Sprich:
AFC einmalig nach dem einschalten,
r = unbegrenzt
....
jetzt mal ein wenig den rssi threshold einstellen ;)
Gruß,
Nico
EIMSK|=_BV(INT1);// INT0 en INT1 als externe interrupts...
31
EICRA|=_BV(ISC00);// alles op 1]
32
33
TCCR1B=_BV(CS10);// | _BV(CS11);
34
//TIMSK1 |= (1 << TOIE1);
35
36
sei();
Wenn ich die Stromversorgung anschließe (USB), höre ich nach der
initalisierung rauschen (soweit ja in ordnung).. Dann muss ich
eigentlich mindestens einmal reseten (keine trennung der stromversorgung
vom RFM12) damit ich, wenn ein fensterkontakt sendet, klare Signale
hören kann..
ich habe an verschiedenen stellen pausen eingebaut... aber trotzdem
brauch ich ein reset... (manchmal höre ich beim powerup sogar dumpferes
rauschen, dann aber auch dumpferen empfang)
ich habe sehr viel am Receiver Control rumgespielt... höre da aber
eigentlich nie veränderungen / sehe da auch keine...
Mit dem rauschen muss man leben ;) soweit klar... aber ich dachte ich
könnte das signal noch dämpfen / klarer herauskommen lassen, durch
bandbreite, lna , rssi detector threshold.. aber ich sehe da keine
veränderung :(
ich habe leider kein passenden kondensator für den analogfilter! ist das
schlimm?
Vielleicht hat ja jemand ähnliche Probleme gehabt, oder ne spontane idee
wo mein fehler sein könnte!
Gruß, Nico
Hi Leute!
Also,
nachdem ich peinliche Fehler beim verkabeln gemacht habe,
und beim RFM12B in der Config auf 10pf gegangen bin, höre ich immer brav
daten ;)
mein ATMEGA168 läuft auf 20Mhz wenn ich nun eine INT-Routine hier aus
dem Thread nehme, sind die Timing einstellungen ja alle für 10Mhz mc's,
wenn ich das richtig sehe?!
Prescale ist auf 0.. BIT-Timing Zeiten einfach verdoppeln?
Oder Timer auf externe Source stellen und die Clock vom RFM nehmen?
Mir ist dieses dumme gefrage echt peinlich ;)
Aber ich will das unbedingt hinbekommen...
10 Jahre schon Softwareentwickler.. aber hier macht mein hirn zu..
Wie bekomme ich nur das Timing raus :(
Danke danke danke für eure hilfe!
Gruß, Nico
Hi,
von welcher INT-Routine spricht du ? Wenn du die INT-Routine meinst die
dafür zuständig ist wenn Daten im Fifo sind , dann ist es egal wie
schnell der µC getaktet wird.
Gruß
Michael
Hi ;)
sorry, zuviel gearbeitet heute ;)
Ich meine natürliche die interruptroutine die Triggert wenn daten am
DATA Pin anliegen!
FIFO benutze ich ja nicht, weil ich die Daten empfangen möchte.
Und da ich zwischen zwei Interrupts die Zeit Messe, um die
Manchester-Codierten Daten erfassen zu können, denke ich schon, das ich
eben genau deswegen, bezüglich des Timings, die Zeitspanne zwischen zwei
Flanken-wechsel wissen muss.
In den oberen Beispiele sind ja Zeitangaben für 2 Manchester-Bits
angegeben.
Es wird jedesmal der Timer0 abgefragt, welcher auf Prescale 0
eingestellt ist. Der Mc ist mit 10Mhz getaktet, meiner wiederum mit
20Mhz.. ein Prescale von 0 bei 20Mhz müsste ja eigentlich auch einen
doppelt so hohen Wert im Timer0 bedeutet. Oder bin ich jetzt vollkommen
falsch?
die ETH-Module, insofern sie funken, funken ja Manchester mit 9600Baud..
Oder nicht? Wieviel Zeit muss bei 9600Baud zwischen zwei Flanken wechsel
vergehen? und kann man das so hinrechnen, das man alleine durch
berechnungen einen direkt verwendbaren wert erhält?
Wie habt ihr das denn herausbekommmen?
Gruß, Nico
Hier im Thread siehst du wie weit 2 Flanken auseinander liegen (im Bild)
Beitrag "Re: CRC Berechnung für ETH comfort 200"
Ich habe die Datenauswertung mit meinem Logic-Analyser gemacht per Hand.
Mit der Int-Routine hat bei mir nicht zuverlässig funktioniert und ich
hatte da auch nicht die Zeit für.
Muart23 schrieb:> Ich habe mir auch ein> paar EHT200 zugelegt und würde nun gerne das ganze (und mehr) vom PC aus> steuern. Hat sich mal jemand den USB Stick zu diesem System angeschaut?
ich möchte jetzt auch, ich weiss etwas spät, aber evtl. ist einer so
nett mir einiges zu erklären was mir noch unklar ist.
Ziel die Thermostate fernzusteuern......
ich dachte mal mit dem USB Stick könnte ich das schon, ABER
es muss ja immer ! die Kopplung gestartet werden am Thermostat bevor
dieser die USB annimmt, also ist nix mit vom PC anzusteuern.
OK dann steuere ich die halt vom AVR an, ABER und das verstehe ich nicht
wenn ich einen Raumthermostaten habe dann muss der Raumthermostat mit
dem Ventil gekoppelt werden, es arbeitet nur noch der Raumthermostat,
das Regelmodul im Ventil ist doch dann ausser Betrieb und dann scheint
das Ventil immer auf Empfang zu stehen ?
meine Logik sagt mir die Ventile stehen sowieso immer auf Empfang, sonst
könnten sie nicht auf den Fensterkontakt und die FB reagieren und wenn
das so ist dann könnte ich die auch direkt ansteuern, nur warum muss ich
dann am USB immer koppeln ?
brauche ich noch eine Funkfernbedienung um die Codes rauszubekommen für
up/down ? brauche ich einen Wandthermostaten um die Codes rauszubekommen
für up/down/programmierung ?
ich würde gerne weitere Käufe vermeiden
1. Vermutung, die Comfort 200 empfangen immer (zumindest den
Fensterkontakt)
2. Vermutung, die Comfort 200 können manuell up/down gestellt werden mit
der FB
daraus folgt, es genügt ein AVR mit RFM12 (eigentlich RFM02 Sender) und
ich könnte die Wunschtemperatur fernsteuern
ist jemand schon weiter mit dafür funktionierendem Code ?
ich hatte schon mal mit den 433 MHz Modulen gespielt aber nur wenig
Erfolg gehabt viel Störungen wenig Übertragung und erst mal abgebrochen,
die Meldungen hier lassen mich für die 866 MHz hoffen
wie lang den "Antennendraht" ca ? lambda 34,6cm lambda/2 oder lambda/4 ?
ich habe auch ein s Modul erhalten, hoffentlich habe ich nicht die
Probleme meiner Vorposter, ich würde schon gerne den ganzen Vcc Hub
nutzen von 3,x V bis 5,4V
Moin,
zum USB - Stick kann ich nichts sagen den habe ich nicht. Aber du kannst
mit dem Code der oben gepostet wurde und einem AVR + RFM12 (868Mhz) den
Thermostat steuern.
Dabei simuliert der AVR eine Fernbedienung. Der AVR wird 1x am
Thermostat angelernt und das war's. Die Antenne hat ca. 8,75cm lambda/4.
An alle die noch etwas über das Funkprotokoll erfahren möchte, es ist
möglich am Thermostaten die SPI Leitungen anzuzapfen , ich hatte das
damals gemacht um herauszufinden was an meinem Programm verkehrt ist.
Ich habe ein Bild angehängt , da sieht man die Leitungen auf dem Chip.
Gruß
Michael
Michael schrieb:> Aber du kannst> mit dem Code der oben gepostet wurde und einem AVR + RFM12 (868Mhz) den> Thermostat steuern.> Dabei simuliert der AVR eine Fernbedienung. Der AVR wird 1x am> Thermostat angelernt und das war's. Die Antenne hat ca. 8,75cm lambda/4.
hmmm hier gibts ja nur 2-3 Codefetzen, den von Dietmar und den ETH.c von
dir und einige .h scheinen auch zu fehlen
OK Lambda/4 Antenne ist schon bestückt, verkabelt auch, ich bin noch am
anpassen auf meiner HW und muss mich durch den Code quälen, habe eigene
USART Routinen drin und ein LCD auf SPI Basis deswegen kann ich das
nicht sofort verwenden, trotzdem danke
gruss
jar
Michael schrieb:> Dabei simuliert der AVR eine Fernbedienung. Der AVR wird 1x am> Thermostat angelernt und das war's.
dann muss doch jede FB eine Seriennummer haben um verschiedene
Thermostaten anzulernen, die müsste ja dann umgestellt werden ? muss ich
mal suchen.....
Hallo,
man kann sich auch das ganze Protokollgedöns sparen und die Tasten der
Funkfernbedienung direkt mit einem uC Ansteuern.
Digitale Ports sind am uC meistens genug vorhanden.
Falls Potentialtrennung erforderlich sein sollte, gibt es dafür
sicherlich
auch eine Lösung. Im Extremfall ein Relais.
Oder ist das zu einfach?
so ich habe mal meinen Code angehängt. Ich hatte damals Eine Basis die
per UART mit meinem PC (Website) kommuniziert hat(Perl-Schnittstelle).
Temp-Änderungen auf der Homepage wurden per UART an den µC gesendet und
dieser hat dann an den Thermostat gefunkt. Zusätzlich hatte ich noch
kleine Tempsensoren die in regelmäßigen Abständen die Raumtemperatur an
die Basis gesendet haben.
Im Anhang ist jetzt nur der Code für die Basis - Station. Bereinigen
musst du den Code selbst.
Gruß
Michael
@Hans:
1. Die Signale der Funkfernbedienung sind nicht stark genug um damit im
ganzen Haus alle Thermostate zu erreichen. Mit dem RFM12 ist das kein
Problem.
2. Es ist mit der Funkfernbedienung nicht möglich Gruppen zu schalten.
Was mit dem RFM12 möglich ist.
Gruß
bei mir sitzt ja an der Fritzbox ein Pollin NETIO und in jedem Zimmer
ein onwire DS18B20 somit habe ich schon den Webserver (schön sparsam)
die Temperaturabfrage in jedem Zimmer, grübel nur noch ob ich eine Ader
für 5V nehme um dort dann einen AVR zu setzen, der könnte auch onewire
slave spielen zum Thermostat anfunken, an passive Speisung a la DS18B20
glaub ich leider nicht, aber onwire slave sind wohl anspruchsvoller vom
Timing und ob interne 8MHz reichen weiss ich auch nicht, notfalls
brauche ich 2 Leitungen, RXD und +V aber in einigen Zimmern gehen mir
die Strippen aus, oder ein Master mit 433 RF aufbauen und auf 433
empfangen um auf 866 zu stellen irgendwie krampfig, wenn aber die
Reichweite passt könnte alles auf 866 laufen, Funkbrücke und Temp
stellen
Michael schrieb:> 2. Es ist mit der Funkfernbedienung nicht möglich Gruppen zu schalten.
echt ?
ich frag mich wie z.B. Räume mit mehr Heizkörper funktionieren sollen ?
mit mehreren FB ?
was ist mit mehreren Fenstern ? pro Fenster nur ein Thermostat ? oder
pro Thermostat nur ein Fenster ?
alles Fragen wo ich die Antwort noch nicht kenne (evt. stehts in der
Anleitung?)
Also was die FB betrifft:
Die FB hat eine Seriennummer. Wenn du jetzt 1 oder mehr Thermostate an
die Fernbedienung anlernst kannst du die nur alle gemeinsam steuern mit
+/- von der eingestellten Temperatur.
Bei dem AVR Programm ist es so , dass du beliebig viele Thermostate
entweder zusammen oder getrennt steuern kannst. Je nachdem wie du die
Thermos anlernst. Mit jedem Anlernen wird eine neue Seriennummer an die
Thermos gesendet und dementsprechend simuliert der AVR mehrere
Fernbedienung.
Ein weiterer Vorteil, der AVR steuert immer erst die 5° am Thermostat
als Referenztemp an und setzt dann die Soll-Temperatur. Wenn du die
Kauf-FB nutzt kannst du immer nur +/- drücken aber keine absolute
Soll-Temp einstellen. Wenn du dich mehr mit dem Thema beschäftigst wird
das klarer :)
grüße
Michael schrieb:> Die FB hat eine Seriennummer. Wenn du jetzt 1 oder mehr Thermostate an> die Fernbedienung anlernst kannst du die nur alle gemeinsam steuern mit> +/- von der eingestellten Temperatur.
das hatte ich schon verstanden ;-)
> Ein weiterer Vorteil, der AVR steuert immer erst die 5° am Thermostat> als Referenztemp an und setzt dann die Soll-Temperatur. Wenn du die> Kauf-FB nutzt kannst du immer nur +/- drücken aber keine absolute> Soll-Temp einstellen.
das auch ;-)
> Bei dem AVR Programm ist es so , dass du beliebig viele Thermostate> entweder zusammen oder getrennt steuern kannst. Je nachdem wie du die> Thermos anlernst. Mit jedem Anlernen wird eine neue Seriennummer an die> Thermos gesendet und dementsprechend simuliert der AVR mehrere> Fernbedienung.
nun ja für den AVR ist das ja egal, aber in der Testphase ist es IMHO
nicht sinnvoll jedesmal neue Seriennummern zu generieren und schon gar
nicht dürfen die mit echten Geräten kollidieren, deswegen meine
hartnäckigen Nachfragen.
z.B. NETIO von Pollin kommt mit echten generierten MAC Adressen daher
obwohl man sich irgendwelche ausdenken könnte, aber dabei halt die
Gefahr: Kollision mit echten Geräten oder
ONEWIRE ID für Slaves auch da kann man sich irgenwas ausdenken, aber
dabei halt die Gefahr: Kollision mit echten Geräten
evt. gibt es sogar unsinnige Seriennummern die von den Geräten abgelehnt
werden, deswegen meine penetrante Nachfragerei...
> Wenn du dich mehr mit dem Thema beschäftigst wird das klarer :)
logo, nur o. genannte "Unsicherheiten" vertreiben meine Fragezeichen
nicht. In der Testphase sollte ich nur eine Seriennummer generieren,
anlernen und diese immer wieder verwenden, also im EEPROM ablegen und
bei jedem Compilerlauf und Test verwenden, an jedem Testgerät (muss ja
nicht dieselbe AVR Platine sein oder bleiben)
LG
jar
das mit dem CRC hat Dietmar hinbekommen wie auch sonst die Grundlagen
dazu. Ob die Thermostate von Reichelt kompatibel mit dem ETH200 sind
weiss ich nicht. Ich würde an Deiner Stelle erstmal 1 bestellen und
testen. Den Code musst du an deinen µC anpassen. Was hast du den bis
jetzt schon Website ? Kommunikation zwischen Website und µC ?
Michael schrieb:> Was hast du den bis> jetzt schon Website ? Kommunikation zwischen Website und µC ?
Ja, geht alles... war ne Quick and Dirty Aktion vorm Winter... einfach
nen Renessas Board von der Embedded World genommen... Wäre denke ich
nicht das Problem nen kleinen Funksender über SPI oder UART
anzuknoten...
Achso, dass nicht das selbe System... macht aber einen sehr ähnlichen
Eindruck... naja, dann warte ich mal lieber noch in den Startlöchern...
Wäre auch bloß Spielerrei gewesen... mir gehts im Grunde nur darum nach
einem Wochenende fernab der Wohnung, wenigstens in einen warmen Raum zu
kommen... Dafür reicht meine Methode bisher völlig...
Grüße
Basti
Hallo,
hat jemand Erfahrungen auch mit Funk - Heizkörper-Thermostat von
Technoline Typ TM3020-RF. Er arbetet auch mit Fensterkontakt. Ich
vergleiche beide Bedienunganleitingen. Es sieht aus, das beide sind
gleiche, nur immer ist andere Importeur.
Danke
Hallo!
Hat es jemand geschafft mit einerm RFM22-Modul mit den ETH-Komponenten
zu reden?
Mit dem RFM12 und der manuellen Decodierung aus diesem Thread
funktioniert es bei mir.
Ich möchte aber ein RFM22 verwenden, weil ich damit auch noch was
anderes empfangen/senden möchte.
Ideal wäre eine Konfiguration, welche die Decodierung(Sync-Word,
Manchester usw.) direkt dem RFM22 überlässt.
Ich hab schon einige Einstellungen versucht, schaffe es aber nicht das
Syn-Word zu decodieren.
Senden die ETH Module auch eine Preamble 01010101...? Wenn ja wie lange
sollte die sein?
LG Charly
hallo zusammen,
ich habe jetzt schon einige Zeit investiert um mein ETH200 per Funk ans
laufen zu bekommen....leider bekomme ich es nicht hin.
Ich benutze ein jeenode (Arduino)
Kann mir wer helfen, ggf. einen code zurVverfügung stellen?
Wäre sehr sehr hilfreich!
Hi
ich habe hier
https://github.com/nospam2000/urh-ETH_Comfort_decode_plugin ein Plugin
für URH (Universal Radio Hacker) hochgeladen, so dass man die Telegramme
mit einem SDR empfangen kann, z.B. mit einem RTL2832. URH ist ein sehr
praktisches Tool um die Parameter eines Funksignals zu extrahieren und
zu decodieren. Das decode Script macht die Stream-Synchronisierung und
Manchester Dekodieren. Encoden kann das Script auch.
Michael
Hallo,
auf Basis der großartigen Arbeit von Michael W. war es möglich ein
Skript für den ETH100 zu schreiben. Wie bereits hier erwähnt ist die
Datenstruktur sehr ähnlich dem ETH200. Die Befehle sind zumindest
dieselben. Ein wichtiger Unterschied ist allerdings die CRC Berechnung,
siehe beigefügter Code. Außerdem habe ich noch die Befehle für den
Fensterkontakt hinzugefügt. Wichtig ist anzumerken, dass ich ein RFM69
verwende und kein RFM12. Die Befehle von Michael W. zum RFM12 habe ich
so gelassen, weiß aber nicht ob das so funktioniert. Mit meinem RFM69
geht es und könnte auch die Konfiguration dafür nachliefern sofern
gewünscht. Weiterhin war es möglich herauszufinden wie ein
Wandthermostat angelernt wird oder wie der USB-Programmierstick Daten
sendet. Dies ist aber nicht implementiert.
Schöne Grüße,
Jonas
Hi Jonas,
ist schon eine Weile her, dass du hier gepostet hast, aber ich würde
auch gerne den RFM69 nutzen und wäre an deinen verwendeten
Registern/Einstellungen interessiert.
Insbesondere ob du die interne Manchester Dekodierung nutzt und den
RFM69 im Packet mode oder im Continuous mode verwendest.
cu
Matthias
Hallo zusammen,
ich weiß nicht, ob das Thema noch jemanden interessiert, die Hardware
ist ja nun schon etwas älter ;-).
Da ich aber aus den Beiträgen und den Code-Schnipsel hier extrem viel
gelernt habe möchte ich meinen Code, den ich den letzten Wochen
geschrieben habe, ebenfalls veröffentlichen. Ohne eure Dekodierung des
Funktprotokolls hätte ich das niemals umsetzen können.
Ich nutze einen Wemos D1 mini zusammen mit einm RFM69HCW modul um eine
MQTT Bridge für die EQ3/ELV Komoponenten zu implementieren. Allerdings
nur für Fenstersensoren, Fernbedienungen und die Thermostate.
Der Code lässt sich mit Platform IO direkt kompilieren und nutzen.
https://github.com/mt-mrx/MXETHControl
cu
Matthias
Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
Groß- und Kleinschreibung verwenden
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang