Forum: Haus & Smart Home CRC Berechnung für ETH comfort 200


von Dietmar W. (Gast)


Lesenswert?

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

von Daniel Held (Gast)


Lesenswert?

Das ist keine "normale" CRC16-Summe.
Wahrscheinlich etwas spezielles des Herstellers.
Da hilft wohl nur ausprobieren.

von felix (Gast)


Lesenswert?

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

von felix (Gast)


Lesenswert?

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

von noname (Gast)


Lesenswert?

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üß

von Muart23 (Gast)


Lesenswert?

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

von Arndt S. (arndt)


Lesenswert?

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

von SVEN (Gast)


Lesenswert?

Gibt es was Neues dazu?

von Dietmar W. (Gast)


Lesenswert?

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

von Arndt S. (arndt)


Lesenswert?

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

von Pete (Gast)


Lesenswert?

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

von Stefan (Gast)


Lesenswert?

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

von Dietmar W. (Gast)


Lesenswert?

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

von Daniel M. (daniel_m)


Lesenswert?

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

von Karl Z. (charly_at)


Lesenswert?

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

von Dietmar W. (Gast)


Angehängte Dateien:

Lesenswert?

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

von Thomas (Gast)


Lesenswert?

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

von johnnybravo (Gast)


Lesenswert?

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

von Michael W. (michel72)


Lesenswert?

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

von Michael W. (michel72)


Angehängte Dateien:

Lesenswert?

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.
1
//RFM12 - Configuration Command
2
//el : Enable TX register = 1
3
//ef : Enable RX FIFO buffer = 0
4
//Select 868 MHz band
5
//Select 11 pF crystal load capacitor
6
  writeCmd(0x80A5);      // Disable FIFO
7
//RFM12 - Frequency Command
8
//Set center frequency to 868.3 MHz
9
  writeCmd(0xA67c);
10
11
  rf12_setbaud(9600);
12
  
13
//RFM12 - Receiver Control Command
14
//p20 : 0=INTin, 1=VDIout = 1
15
//VDI response time = Fast
16
//Receiver bandwidth = 134 kHz
17
//LNA gain = 0 dB
18
//RSSI threshold = -73 dBm
19
  writeCmd(0x94A5);    // Receiver Control
20
21
22
  writeCmd(0xC220);   // undokumentierte Funktion 
23
  
24
//RFM12 - FIFO / Reset Mode Command
25
//al : 0=Sync pattern, 1=Always = 1
26
//ff : FIFO fill = 0
27
//dr : Disable high sens. Reset = 1
28
//FIFO IT level = 8  
29
  writeCmd(0xCA85);
30
31
//RFM12 - AFC Command
32
//AFC automatic mode = Offset VDI=h
33
//st : Strobe edge = 0
34
//fi : Fine mode = 1
35
//oe : Offset register enable = 1
36
//en : Calculate offset = 1
37
//Range limit = +7fres to -8fres
38
//Max. Deviation = +35kHz to -40kHz
39
  writeCmd(0xC4A7);
40
41
//RFM12 - TX Configuration Command
42
//mp = 0
43
//Delta f (fsk) = 30 kHz
44
//Output power = 0 dB
45
  writeCmd(0x9810);
46
47
//RFM12 - Power Management Command
48
//er : Enable receiver chain = 1
49
//ebb : Enable baseband = 1
50
//et : Enable PLL,PA, TX = 0
51
//es : Enable synthesizer = 1
52
//ex : Enable crystal oscillator = 1
53
//eb : Enable low battery detector = 0
54
//ew : Enable wake-up timer = 0
55
//dc : Disable clock output = 1
56
  writeCmd(0x82D9);

von Karl Z. (charly_at)


Lesenswert?

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

von Michael W. (michel72)


Angehängte Dateien:

Lesenswert?

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 ?

von Michael W. (michel72)


Lesenswert?

welches Signal habe ich am DCLK zu erwarten ? konstantes Taktsignal ?

von Karl Z. (charly_at)


Angehängte Dateien:

Lesenswert?

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

von Michael W. (michel72)


Angehängte Dateien:

Lesenswert?

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 ?

von Dietmar (Gast)


Lesenswert?

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

von Michael W. (michel72)


Angehängte Dateien:

Lesenswert?

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

von Michael W. (michel72)


Lesenswert?

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

von Dietmar W. (Gast)


Lesenswert?

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

von Dietmar W. (Gast)


Lesenswert?

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

von Michael W. (michel72)


Lesenswert?

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

von Michael W. (michel72)


Lesenswert?

gibt es eine Möglichkeit, das Modul gegen Funkstörungen abzuschotten ?

von Dietmar Weisser (Gast)


Lesenswert?

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...

von Michael W. (michel72)


Angehängte Dateien:

Lesenswert?

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

von Michael W. (michel72)


Angehängte Dateien:

Lesenswert?

habe das hier noch gefunden.

von Dietmar (Gast)


Lesenswert?

Das Signal sieht jetzt gut aus!

von Michael W. (michel72)


Angehängte Dateien:

Lesenswert?

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
38
              }
39
              cnt++;
40
              if (cnt == 8){
41
                   strcat(Messagetxt[irrh],"-->");
42
                   strcat(Messagetxt[irrh],itoa(shiftRegister,Buffer,8));
43
                   strcat(Messagetxt[irrh]," -- ");
44
                   cnt=0;
45
                   irrh++;
46
                   strcpy(Messagetxt[irrh],"");
47
                   shiftRegister=0; //kann ich mir eigentlich sparen oder ?
48
              }
49
           } // if(found==1....
50
           State = 1 ; // und wieder von vorne ! da wir die allererste Flanke haben fangen wir mit 1 an.
51
           TCNT1 = 0 ;
52
        }  // if(state 2 || 3 ......
53
     }  //if(TCNT1 > 3040 & T....
54
55
56
     // nix passiert im Zeitfenster also alles wieder auf  0
57
     if(TCNT1 > 4000){
58
       State = 1;
59
       TCNT1=0;
60
    }
61
}

von AXSEM (Gast)


Lesenswert?

In den Reglern sind AX5131/AX5151 RF-Chips von AXSEM verbaut, die per 
SPI angesteuert werden. Siehe:
http://www.axsem.com/www/index.php?option=com_content&view=article&id=107&Itemid=93

Also schau doch einfach in die Datenblätter und lese den SPI Traffic mit 
um zu sehen was wirklich initialisiert und gesendet wird...

von Dietmar (Gast)


Lesenswert?

siehe: http://de.wikipedia.org/wiki/Manchester-Code

Manchester 1 ist eine 10
Manchester 0 ist eine 01
somit ist 7e
01 10 10 10 10 10 10 01

Gruß Dietmar

von Michel72 (Gast)


Lesenswert?

Danke Dietmar,

habe jetzt die Initialisierung gefunden und auch das Prinzip verstanden 
!

Gruß Michael

von Michael W. (michel72)


Lesenswert?

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ß

von Michael W. (michel72)


Lesenswert?

Das mit dem DATA-PIN hat sich erledigt !

von Michael W. (michel72)


Angehängte Dateien:

Lesenswert?

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 ?

von Dietmar (Gast)


Lesenswert?

Das ist schon 55 AA allerdings nur einmal und nicht Manchestercodiert

von rhb (Gast)


Lesenswert?

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

von Michael W. (michel72)


Lesenswert?

Hi rhb,

die empfangen nur. Steht auch in dem PDF weiter oben.

von rhb (Gast)


Lesenswert?

Danke Michael,

dachte dass wenigstens eins der comfort100-300 Module auch senden 
kann...

von Michael W. (michel72)


Lesenswert?

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ß

von Michael W. (michel72)


Lesenswert?

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.

von Beginner (Gast)


Lesenswert?

Hi alle,

kann man jetzt die Funkthermostate steuern mit rfm12 oder nicht? Hat 
jemand das rausgekriegt?

Gruß
lambda

von Michel72 (Gast)


Lesenswert?

ja geht.....

von Michael W. (michel72)


Angehängte Dateien:

Lesenswert?

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ß

von Nico H. (nico84)


Lesenswert?

Welche RFM12 Bibl. hattest du verwendet?

von M. H. (mh555)


Lesenswert?

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

von Rene B. (themason) Benutzerseite


Lesenswert?

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 ?

von M. H. (mh555)


Lesenswert?

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.

von Rene B. (themason) Benutzerseite


Lesenswert?

@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 ?

von Michael W. (michel72)


Lesenswert?

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

von Rene B. (themason) Benutzerseite


Lesenswert?

@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 ?

von Michael W. (michel72)


Lesenswert?

@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 ;)

von Rene B. (themason) Benutzerseite


Lesenswert?

@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.

von Lazybone (Gast)


Lesenswert?

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.

von Xylinx (Gast)


Lesenswert?

Hallo Zusammen,

hat jemand das komplette Protokoll und alle Kommandos die es gibt?

von Buzii (Gast)


Lesenswert?

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

von DiWe (Gast)


Lesenswert?

schau Dir doch mal die beiden Codes an welche hier im Forum reingestellt 
wurden, da ist die CRC Berechnung drin.

von buzii (Gast)


Lesenswert?

Natürlich habe ich mir die Codes vorher angesehen, aber wie vorher schon 
erwähnt, kapiere ich es nicht.

von Iceland (Gast)


Lesenswert?

Es ist ein reverser 16Bit CRC, das steht im Code, das Syndromwort ist 
auch angegeben, was möchtest Du noch wissen???

von Buzii (Gast)


Lesenswert?

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.

von Kurt (Gast)


Lesenswert?

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?

von iceland (Gast)


Lesenswert?

ich denke nicht dass der online Rechner einen reversen CRC berechnet. 
Tausche mal die bit-Reihenfolge um und lasse es dann durch den online 
Rechner

von Buzii (Gast)


Lesenswert?

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.

von iceland (Gast)


Lesenswert?

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.

von Buzii (Gast)


Angehängte Dateien:

Lesenswert?

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

von Buzii (Gast)


Lesenswert?

Hey nicht alle auf einmal, ich kann nicht alle Antworten auf einmal 
lesen :-) "Verzweifelter Humor" Aber im ernst, hat wirklich keiner eine 
Idee?

von Michael W. (Gast)


Lesenswert?

Moin,


nimm doch mal mein Programm das den Code von Dietmar (*wink) 
implementiert hat und schau dir mal im Detail an was die CRC Berechnung 
macht.
1
uint16_t calcCRC16r( uint16_t c,uint16_t crc, uint16_t mask)  // reverser crc!!!!!!
2
{
3
  unsigned char i;
4
  for(i=0;i<8;i++)
5
  {
6
    if((crc ^ c) & 1) 
7
      { crc=(crc>>1)^mask; }  // nur wenn das niederwertige Bit aus dem  XOR zwischen crc und c eine 1 hat 
8
    else crc>>=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

von Buzii (Gast)


Lesenswert?

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

von Buzii (Gast)


Lesenswert?

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

von Martin W. (jacksons5)


Lesenswert?

Was genau ist denn jetzt mit einem ETH Funk Thermostat inkl. Außensensor
 über Funk möglich ? Welche Befehler können gesendet und empfangen 
werden.

von jayjay (Gast)


Lesenswert?

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

von jayjay (Gast)


Lesenswert?

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.

von Klausi (Gast)


Lesenswert?

Wo hast du denn den Wandthermostat bezogen? ELV hat ihn nicht mehr im 
Angebot.

Gruß
Klausi

von Nico (Gast)


Lesenswert?

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

von Michael W. (Gast)


Lesenswert?

Hallo Nico,

was ist jetzt genau Dein Problem ? Wenn es um das Rauschen geht, hatte 
ich auch siehe :
Beitrag "Re: CRC Berechnung für ETH comfort 200"

Gruß
Michael

von Nico (Gast)


Lesenswert?

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

von Michael W. (Gast)


Lesenswert?

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ß

von Nico (Gast)


Lesenswert?

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

von Nico (Gast)


Lesenswert?

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

von Michael W. (Gast)


Lesenswert?

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

von Nico (Gast)


Lesenswert?

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

von Michael W. (Gast)


Lesenswert?

poste mal deine Konfiguration bzw. Initialisierung.
Übrigens hier noch ein sehr hilfreiches Tool :
http://www.controller-designs.de/index.php?lang=de&cat=projekte&cont=rfm12_eva&sub=

von Nico (Gast)


Lesenswert?

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

von Nico (Gast)


Lesenswert?

Hier meine Initalisierungsroutine:

1
write_cmd(0x8025);
2
3
write_cmd(0xA67c);
4
5
write_cmd(0xc600 | 35);
6
7
//_delay_ms(800);
8
9
//write_cmd(0x94D5);    // Receiver Control
10
  
11
write_cmd(0x9930);    // Receiver Control
12
  
13
  
14
write_cmd(0xC278);   // undokumentierte Funktion
15
16
write_cmd(0xCA01);
17
18
write_cmd(0xC443);
19
20
write_cmd(0x8281);
21
//_delay_ms(800);
22
//write_cmd(0x0000);
23
24
  _delay_ms(400);
25
  cli();  
26
  //DDRB |= (1<<PB4); // Chip select for RFM12B
27
  DDRB = ~(1<<PD3); // input
28
  //DDRD =0x06;
29
  //PORTD =0xff;
30
  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

von Nico (Gast)


Lesenswert?

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

von Michael W. (Gast)


Lesenswert?

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

von Nico (Gast)


Lesenswert?

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

von Michael W. (Gast)


Lesenswert?

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.

von jar (Gast)


Lesenswert?

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

von Joachim B. (jar)


Lesenswert?

up

gruss
jar

von Michael (Gast)


Angehängte Dateien:

Lesenswert?

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

von Joachim B. (jar)


Lesenswert?

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

von Joachim B. (jar)


Lesenswert?

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.....

von Hans O. (hoteloskar)


Lesenswert?

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?

von Michael (Gast)


Angehängte Dateien:

Lesenswert?

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

von Michael (Gast)


Lesenswert?

@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ß

von Joachim B. (jar)


Lesenswert?

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

von jar (Gast)


Lesenswert?

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?)

von Joachim B. (jar)


Lesenswert?

Michael schrieb:
> 2. Es ist mit der Funkfernbedienung nicht möglich Gruppen zu schalten.

wie meinst du das ? ich lese:

ELV Funk-Fernbedienung ETH comfort
Beliebig viele Funk-Stellantriebe ansteuerbar
http://www.elv.de/elv-funk-fernbedienung-eth-comfort.html

und für die Fensterkontakte:
ELV Funk-Fensterkontakt ETH comfort
An beliebig viele Funk-Stellantriebe anlernbar
http://www.elv.de/elv-funk-fensterkontakt-eth-comfort.html

damit hätten wir das auch geklärt

von Michael (Gast)


Lesenswert?

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

von Joachim B. (jar)


Lesenswert?

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

von Basti M. (counterfeiter)


Lesenswert?

Ist irgendjemand weiter gekommen?

Zur Zeit habe ich ein Webserver laufen der mir bei dem System ohne Funk 
immer für eine bestimmte Zeit den Boostknopf drückt... ging schnell und 
war billig... heute seh ich, dass das Funkthermostat bei Reichelt nur 
noch 20 € kostet :-/

http://www.reichelt.de/Regler-Thermostate/EHT-COMFORT-A/3/index.html?;ACTION=3;LA=0;ARTICLE=91776;GROUPID=4382;artnr=EHT+COMFORT+A;SID=11UHw@I38AAAIAAHZO5kYde3496ebeb4de3ffc4e6f3cd2e4ca741


Aber so richtig erfolgreich funktioniert das bei euch noch nicht, wenn 
ich das so überflogen habe?! Oder gibts doch schon ne Lösung?

von Joachim B. (jar)


Lesenswert?

noch läuft die Funke nicht bei mir

von Michael (Gast)


Lesenswert?

Hi Basti,

natürlich läuft es. es ist möglich mit dem RFM12 den Thermostat 
anzulernen und zu steuern.

Gruß
Michael

von Basti M. (counterfeiter)


Lesenswert?

Achso? Gibts da schon nen Wiki dazu? Dann würde ich mal meine Bestellung 
bei Reichelt aufgeben ;)

Habt ihr das mit dem CRC hinbekommen?

von Michael (Gast)


Lesenswert?

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 ?

von Basti M. (counterfeiter)


Lesenswert?

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

von Miroslav (Gast)


Lesenswert?

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

von Karl Z. (charly_at)


Lesenswert?

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

von ulli (Gast)


Lesenswert?

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!

von Miroslav (Gast)


Lesenswert?

Jetzt nach dem Paar jahren ich habe nochmals probiert mit TM3020-RF. Es 
ist möglich steuern. Jetzt ich kann ändern die Temperatur.

von Michael D. (nospam2000)


Lesenswert?

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

von Jonas G. (jogo)


Angehängte Dateien:

Lesenswert?

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

von mx (Gast)


Lesenswert?

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

von mx (Gast)


Lesenswert?

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

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.