Fensterdrehgriffkontakt selber bauen

Begonnen von Kawaci, 02 Mai 2017, 08:31:59

Vorheriges Thema - Nächstes Thema

UweH

Auf die Gefahr hin, eine dämliche Frage zu stellen: Welche Ausgaben?

papa

Zitat von: UweH am 27 Mai 2017, 09:46:39
Auf die Gefahr hin, eine dämliche Frage zu stellen: Welche Ausgaben?
Aus dem Eventlog bzw. logfile nachdem der Pairing-Vorgang gestartet wurde.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

UweH

#197
So, ich bin heute extra zu Conrad getrabt, um mir ein "reguläres" Funk-Homematic-Gerät zu besorgen, damit ich wenigstens eine Kontrolle habe, ob der nanoCUL nicht funktioniert oder ich. Nun habe ich eine funktionierende Funksteckdose, das peeren hat funktioniert. Läuft also.

Nun zum Fenstergriff. HM-Device (nanoCUL) in "hmPairForSec" versetzen, D8 am Arduino auf GND, die beiden LEDs blinken. Am HM-Device die Serial des Fenstergriffs (Sketch Zeile 11) mit "hmPairSerial" senden. Ist die Vorgehensweise ok? Passiert aber nix.

Gruß
Uwe

EDIT: Noch was. Der Arduino hängt sich extrem häufig auf. Entweder verfallen die LEDs nach dem Einschalten in Schockstarre und leuchten dauerhaft oder sie blinken nach dem kurz und dann geht nix mehr. Selbst ein Reset hat keinen Erfolg, man muss die Spannung wegnehmen. Gefühlt ist immer erst der 5. Einschaltversuch erfolgreich. Oder das Teil hängt nach ein paar Minuten. Immer wieder mal was anderes...

papa

Noch eine Idee - welchen Bootloader verwendest Du ? Die Lib geht derzeit davon aus, dass eigentlich alles abgeschalten ist und erst explizit angeschalten werden muss. Es gab ein ähnliches Problem mit dem OTA-Bootloader, der den GDO0-Interrupt aktiviert lies. Wenn das die Hardware initialisiert wurde, kam es zu einen Interrupt, bevor der entsprechende Handler eingerichtet war.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

papa

So - ich kann dann den ersten Erfolg melden. Habe heute eine Paltine bestückt und es läuft. Hier mal der erste Versuch, die Arbeitsschritte zu beschreiben.

Als erstes ist der ATMega und R1, C1 und C2 zu bestücken. Das reicht aus, um den Bootloader per ISP zu flashen. Doch bevor das erfolgen kann, muss der Bootloader mit der GeräteID und Serial bestückt werden. Hierzu dient das angehängte "makeota.html". Zuerst den ebenfalls angehängten "Bootloader-OTA-atmega328.hex" laden. Dann die ModelID 0030 und beliebige GeräteID und Serial eingeben. Nach drücken der Taste "Create" erscheint ein Link"Save Bootloader", mit welchen der angepasste Boorloader gespeichert werden kann (siehe auch angehängten ScreenShot). Es wird hierzu kein Netzzugang benötigt. Alles erfolgt per Javascript im Browser.

Jetzt ist der Bootloader zu flashen. Ich benutzte einen USBasp dafür. Als Stecker zur Platine dient eine "normale" 2-reihiger Buchse, deren Pins soweit zusammengeborgen wurden, dass sie die Platine fest einklemmen - siehe Foto.

Zum Flashen des Bootloader sind dann folgende Befehle nötig:


avrdude -p m328p -P usb -c usbasp -B 3 -U lfuse:w:0xE2:m -U hfuse:w:0xD0:m -U efuse:w:0x06:m -U lock:w:0x2F:m
avrdude -p m328p -P usb -c usbasp -V -U flash:w:bootloader.hex


Falls es Probleme gibt, bitte mal den Slow-Mode des USBasp probieren und prüfen, ob die Pins des Mega alle ordentlich verlötet sind.

Nach Flashen des Bootloader kann der Rest bestückt werden. Der Quarz und die zugehörigen Kondensatoren werden nicht benötigt. Ich habe noch 2 Bilder vom fertigen Aufbau angehängt.

Wenn jetzt die Platine mit Spannung versorgt wird (bitte Hinweis ganz am Ende beachten), sollte die rote LED 7x blinken. Das signalisiert, dass der Bootloader erfolgreich gestartet wurde. Er wartet jetzt darauf, dass die Fimrware übertragen wird. Hierzu wird flash-ota benötigt. Für einen HM-CFG-USB sieht der Aufruf wie folgt aus:


flash-ota -f avr_HM_SEC_RHS_201705271601.eq3 -s RHS0000000


Falls Fehler während der Übertragung auftreten, muss der Flashvorgang nochaml wiederholt werden. Der Bottloader startet dann die Firmware nicht.
Wenn die Firmware erfolgreich übertragen werde konnte, kann der Sensor gepairt werden und sollte den Status entsprechend der Zustände an A0 & A1 melden. Derzeit ist folgende Logic implementiert:

A0 & A1 offen - PosA -> CLOSED
A0 geschlossen - PosB -> OPEN
A1 geschlossen - PosC -> TILTED

Die Bedeutung der Positionen kann mittels der entsprechenden Regsiter eingestellt werden. Ebenfalls kann die CyclicInfoMsg aktiviert werden. Der Sensor meldet sich dann alle 24 Stunden mit dem aktuellen Status.

Die Sabotage-Erkennung an A2 scheint noch nicht richtig zu funktionieren.

ACHTUNG: Die Platine enthält leider einen Fehler. VCC & GND sind n der Pinleiste verkehrt beschriftet.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Dietmar63

Wow, eigentlich ein maßgeschneiderte Arduino mini pro.
Herzlichen Glückwunsch!
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

UweH

Zitat von: Dietmar63 am 28 Mai 2017, 01:43:22
ein maßgeschneiderte Arduino mini pro.
Die Evolution ging anders herum  ;)

UweH

Meine Probleme werden wohl am Bootloader gelegen haben, ich versuche es jetzt mal nach Deiner Anleitung.
ABER:
Bootloader flashen ist ja kein Problem, aber bekommt man die Firmware nur mit flash-ota drauf? Da braucht man ja Stunden, um erst mal flash-ota zum Laufen zu bringen.
Ich habe diverse Brenner, AVR-Studio und noch mehr davon und nun ärgere ich mich schon ewig mit diesem flash-ota rum...Frust.

Gruß
Uwe

papa

In der Arduino IDE gibt es auch den Menupunkt "Upload Using Programmer". Damit braucht man glaube ich gar keinen Bootloader. Habe ich aber noch nicht probiert.

Der OTA hat halt den Vorteil, dass man die Geräte einfach per Funk updaten kann.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

UweH

Ja, da grätscht aber wieder Win10 und diese merkwürdige Treiberpolitik dazwischen.
Ich bin nun zwar einen Schritt weiter, an dieser Stelle hängt der Prozess jetzt:

UweH

Der Quatsch mit dem Arduino ist ja nun auch Spielerei für zwischendurch, weil ich meine Prototypen-Platine noch nicht hergestellt habe. Später muss es also auf jeden Fall per ota laufen...

UweH

Ich habe mich übrigens an diese Anleitung gehalten: https://wiki.fhem.de/wiki/HomeMatic_Firmware_Update

Was bisher immer erfolgreich war, ist, die HEX-Datei mit "Sketch" -> "Kompilierte Binärdatei exportieren" zu erzeugen und dann per Brenner auf den Arduino zu brennen. Funktioniert auch in diesem Fall, aber das Ergebnis ist das Gleiche...die LEDs blinken fröhlich, peeren aber unmöglich. Ich glaube, ich lasse das jetzt und schmeiß die Ätzmaschine an.

Gruß
Uwe

joschi2009

So, habe jetzt auch mal einen zusammengelötet und geflasht, funktioniert.

Allerdings ist der Ruhestrom bei einem auf GND gezogenen Pin bei 0,11 mA, was dann bedeutet, dass bei geschlossenem Fenster beide Pins offen sein müssen sonst hat man nicht lange Freude an den Batterien.

So wie Papa das im Moment konfiguriert hat, wäre das ja auch der Fall, aber die Drehgriffkonstruktion ist wegen der gegenüberliegenden Reedkontakten nicht in der Lage das so abzubilden. Ich muss mal schauen, ob ich das umgebaut bekomme.

UweH

Zitat von: joschi2009 am 28 Mai 2017, 15:08:48
So, habe jetzt auch mal einen zusammengelötet und geflasht, funktioniert.
OK, dann liegt das wohl eher am Arduino-Aufbau. Seltsam...

UweH

Es hat mir keine Ruhe gelassen...nächsten Arduino aus der Verpackung gepopelt...funktioniert. Das Mistding (China-Klone, keinen Euro teuer, verdammt!) hat eine Unterbrechung auf PB2. Ab in die Tonne das Teil und ein Bier geköpft.
@papa: Danke für Deine Geduld.

Gruß
Uwe