Neue Firmware für HM_LC_Sw1PBU_FM mit getrenntem Aktor, Taster + Wechselschalter

Begonnen von jab, 29 Dezember 2013, 22:04:10

Vorheriges Thema - Nächstes Thema

Dirk

Das heist für OTA Updates brauchen wir einen Conroller mit mindestens 4k Bootloader-Bereich.

Zitat von: jab am 18 März 2014, 17:07:09
Ich will ja verhindern, dass der Bootloader sich selber überflasht. Das verhindern die Fuses doch nicht.
Genau dafür kannst du die Lockbits setzen.
Mir ist es nämlich letztens auch passiert, als ich ein Hexfile per Bootloader geflasht habe was nur etwas zu groß war, und dabei teilweise Bootloader überschrieben hat. Da hatte ich vergessen die Lockbits vorher zu setzen. Mit gesetzten Lockbits kann das nicht passieren.

ZitatIch dachte jetzt erstmal an Blockweise CRC dann kann ich es vorm flashen prüfen.
Wenn du ganz sicher gehen Willst, überträgst du das Flashfile ein zweites mal und vergleichst das mit geschriebenen Bytes im zuvor geschriebenen Flash.


Update:
Wie lange dauert die Übertragung des Updates eigentlich?


Gruß
Dirk

jab

Zitat von: Dirk am 18 März 2014, 22:34:21
Das heist für OTA Updates brauchen wir einen Conroller mit mindestens 4k Bootloader-Bereich.
Genau dafür kannst du die Lockbits setzen.
Mir ist es nämlich letztens auch passiert, als ich ein Hexfile per Bootloader geflasht habe was nur etwas zu groß war, und dabei teilweise Bootloader überschrieben hat. Da hatte ich vergessen die Lockbits vorher zu setzen. Mit gesetzten Lockbits kann das nicht passieren.
Atmega644 hat bis zu 16kb. Daher hatte ich bisher kein Problem. Das mit den lockbits ist gut zu wissen. Probiere ich aus.

Zitat von: Dirk am 18 März 2014, 22:34:21
Update:
Wie lange dauert die Übertragung des Updates eigentlich?
Etwas schneller als bei den Original Aktoren. Kann ich mal messen.

Gruß
Jan

Dirk

Hi Jan,

noch einen Idee / Vorschlag:
Ggf. macht es Sinn den Bootloader dual auszulegen.
So dass der Bootloader die Firmware ggf. noch per UART annimmt.
Vor allem während der Entwicklung und beim Testen wird man xMal pro Stunde Flashen wollen/müssen.
Ich glaube nicht, dass man das per Funk machen kann, wenn man sich an die Vorgaben der RegTP halten möchte.
Daher die Vorherige Frage wie lange die Übertragung dauert.

Alternativ muss man halt während der Entwicklung einen anderen Bootloader verwenden.

Gruß
Dirk

jab

Hi Dirk,

Beim entwickeln nutze ich einfach direkt den ISP. Allerdings kann man den beim Sw1PBU nicht im Betrieb nutzen weil da 230V Volt drauf. Daher muss man aktuell das ding jedes mal ausbauen.


Gruß
Jan

Dirk

Zitat von: jab am 19 März 2014, 11:52:26
Beim entwickeln nutze ich einfach direkt den ISP
Ja, kann man auch machen.

Allerdings kann man den beim Sw1PBU nicht im Betrieb nutzen weil da 230V Volt drauf. Daher muss man aktuell das ding jedes mal ausbauen.
[/quote]
Sollte man zumindest :)
Hier könnte man schön mit 2 Optokopplern, alternativ einen dritten für Reset das ganze galvanisch trennen und dann seriell Flashen.

Gruß
Dirk

frank

hallo jan,

der schalter überfordert mein system.

der hm-schalter ist in einer wechselschaltung, in kombination mit einem busch-jäger wechselschalter, eingebaut. die funktion der wechselschaltung funktioniert einwandfrei. an beiden schaltern kann die lampe ein- und ausgeschaltet werden. channel4 zeigt immer den richtigen status der lampe an, egal mit welchem schalter geschaltet wird.

mein problem existiert im aussgeschalteten zustand der lampe. dann werden alle 1-2 sekunden folgende messages (A410) gesendet. ist die lampe eingeschaltet kommen nur noch die 805E-messages im 30 sekunden takt. das ist wohl der current.
2014.03.20 11:57:18.460 0: HMLAN_Parse: HMLAN1 R:E266EA5   stat:0000 t:03B9CFD6 d:FF r:FFD5     m:14 A410 266EA5 123ABC 0604000000
2014.03.20 11:57:20.240 0: HMLAN_Parse: HMLAN1 R:E266EA5   stat:0000 t:03B9D6CA d:FF r:FFD5     m:15 A410 266EA5 123ABC 0604000000
2014.03.20 11:57:21.604 0: HMLAN_Parse: HMLAN1 R:E266EA5   stat:0000 t:03B9DC1F d:FF r:FFD5     m:16 A410 266EA5 123ABC 0604000000
2014.03.20 11:57:22.306 0: HMLAN_Parse: HMLAN1 R:E266EA5   stat:0000 t:03B9DEDD d:FF r:FFD5     m:17 805E 266EA5 123ABC 00000000000000CD000000
2014.03.20 11:57:24.410 0: HMLAN_Parse: HMLAN1 R:E266EA5   stat:0000 t:03B9E714 d:FF r:FFD4     m:18 A410 266EA5 123ABC 0604000000
2014.03.20 11:57:26.384 0: HMLAN_Parse: HMLAN1 R:E266EA5   stat:0000 t:03B9EECB d:FF r:FFD5     m:19 A410 266EA5 123ABC 0604000000
2014.03.20 11:57:27.968 0: HMLAN_Parse: HMLAN1 R:E266EA5   stat:0000 t:03B9F4FB d:FF r:FFD4     m:1A A410 266EA5 123ABC 0604000000
2014.03.20 11:57:29.761 0: HMLAN_Parse: HMLAN1 R:E266EA5   stat:0000 t:03B9FBFC d:FF r:FFD5     m:1B A410 266EA5 123ABC 0604000000
2014.03.20 11:57:31.707 0: HMLAN_Parse: HMLAN1 R:E266EA5   stat:0000 t:03BA0397 d:FF r:FFD5     m:1C A410 266EA5 123ABC 0604000000
2014.03.20 11:57:33.507 0: HMLAN_Parse: HMLAN1 R:E266EA5   stat:0000 t:03BA0A9F d:FF r:FFD5     m:1D A410 266EA5 123ABC 0604000000
2014.03.20 11:57:34.766 0: HMLAN_Parse: HMLAN1 R:E266EA5   stat:0000 t:03BA0F8A d:FF r:FFD5     m:1E A410 266EA5 123ABC 0604000000
2014.03.20 11:57:35.965 0: HMLAN_Parse: HMLAN1 R:E266EA5   stat:0000 t:03BA1439 d:FF r:FFD5     m:1F A410 266EA5 123ABC 0604000000
2014.03.20 11:57:37.150 0: HMLAN_Parse: HMLAN1 R:E266EA5   stat:0000 t:03BA18DB d:FF r:FFD4     m:20 A410 266EA5 123ABC 0604000000
2014.03.20 11:57:38.405 0: HMLAN_Parse: HMLAN1 R:E266EA5   stat:0000 t:03BA1DC2 d:FF r:FFD5     m:21 A410 266EA5 123ABC 0604000000
2014.03.20 11:57:39.600 0: HMLAN_Parse: HMLAN1 R:E266EA5   stat:0000 t:03BA226D d:FF r:FFD5     m:22 A410 266EA5 123ABC 0604000000
2014.03.20 11:57:41.090 0: HMLAN_Parse: HMLAN1 R:E266EA5   stat:0000 t:03BA283F d:FF r:FFD4     m:23 A410 266EA5 123ABC 0604000000
2014.03.20 11:57:42.581 0: HMLAN_Parse: HMLAN1 R:E266EA5   stat:0000 t:03BA2E13 d:FF r:FFD5     m:24 A410 266EA5 123ABC 0604000000
2014.03.20 11:57:44.127 0: HMLAN_Parse: HMLAN1 R:E266EA5   stat:0000 t:03BA334A d:FF r:FFD5     m:25 A410 266EA5 123ABC 0604000000
2014.03.20 11:57:45.086 0: HMLAN_Parse: HMLAN1 R:E266EA5   stat:0000 t:03BA37DC d:FF r:FFD5     m:26 A410 266EA5 123ABC 0604000000
2014.03.20 11:57:46.856 0: HMLAN_Parse: HMLAN1 R:E266EA5   stat:0000 t:03BA3EC5 d:FF r:FFD5     m:27 A410 266EA5 123ABC 0604000000
2014.03.20 11:57:48.581 0: HMLAN_Parse: HMLAN1 R:E266EA5   stat:0000 t:03BA4583 d:FF r:FFD5     m:28 A410 266EA5 123ABC 0604000000
2014.03.20 11:57:49.906 0: HMLAN_Parse: HMLAN1 R:E266EA5   stat:0000 t:03BA4AB0 d:FF r:FFD5     m:29 A410 266EA5 123ABC 0604000000
2014.03.20 11:57:51.962 0: HMLAN_Parse: HMLAN1 R:E266EA5   stat:0000 t:03BA52B9 d:FF r:FFD5     m:2A A410 266EA5 123ABC 0604000000
2014.03.20 11:57:52.665 0: HMLAN_Parse: HMLAN1 R:E266EA5   stat:0000 t:03BA5577 d:FF r:FFD4     m:2B 805E 266EA5 123ABC 00000000000000CE000000
2014.03.20 11:57:54.086 0: HMLAN_Parse: HMLAN1 R:E266EA5   stat:0000 t:03BA5B05 d:FF r:FFD5     m:2C A410 266EA5 123ABC 0604000000
2014.03.20 11:57:55.773 0: HMLAN_Parse: HMLAN1 R:E266EA5   stat:0000 t:03BA619C d:FF r:FFD7     m:2D A410 266EA5 123ABC 0604000000
2014.03.20 11:57:57.051 0: HMLAN_Parse: HMLAN1 R:E266EA5   stat:0000 t:03BA669A d:FF r:FFD1     m:2E A410 266EA5 123ABC 0604000000
2014.03.20 11:57:58.929 0: HMLAN_Parse: HMLAN1 R:E266EA5   stat:0000 t:03BA6DF0 d:FF r:FFD2     m:2F A410 266EA5 123ABC 0604000000


dieses verhalten ist auch unabhängig vom peeren des internen tasters mit channel3 oder channel4. ich nutze taster Btn01.

sonderbar ist zudem, das der taster-channel kein state-, trigger- reading hat, wenn er mit dem aktor gepeert ist. hier noch ein list vom gepeerten taster:
Internals:
   .triggerUsed 1
   DEF        266EA501
   HMLAN1_MSGCNT 17
   HMLAN1_RAWMSG E266EA5,0000,03F32983,FF,FFCD,B1A010266EA5123ABC0201010000
   HMLAN1_RSSI -51
   HMLAN1_TIME 2014-03-20 12:59:56
   LASTInputDev HMLAN1
   MSGCNT     17
   NAME       SwitchPBU01_Btn_01
   NR         383
   STATE      Short (to HMLAN1)
   TYPE       CUL_HM
   chanNo     01
   device     SwitchPBU01
   peerList   self03,
   Readings:
     2014-03-20 12:59:54   R-dblPress      0 s
     2014-03-20 12:59:54   R-longPress     0.5 s
     2014-03-20 12:59:56   R-self03-expectAES off
     2014-03-20 12:59:56   R-self03-peerNeedsBurst on
     2014-03-20 12:59:54   R-sign          off
     2014-03-20 12:59:54   RegL_01:          04:20 08:00 09:00 00:00
     2014-03-20 12:59:56   RegL_04:self03    01:01 00:00
     2014-03-20 12:59:56   peerList        self03,
   Helper:
     peerIDsRaw ,266EA503,00000000
     Role:
       chn        1
     Shadowreg:
Attributes:
   event-on-change-reading .*
   model      HM-LC-Sw1PBU-FM-CustomFW
   peerIDs    00000000,266EA503,
   room       10_WZ


was mache ich falsch?
mit welchem aktorchannel sollte ich den taster am besten peeren?
kann man die A410 messages abschalten? sonst gibt es error overload.
kann man die B0E5 messages reduzieren?

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

jab

Hi Frank,

das ist noch ein bekanntes Problem. Es tritt nur auf wenn 230V angeschlossen sind. Daher kann ich es recht schwer debuggen. Daher habe ich den Bootloader geschrieben um es zu debuggen. Bei mir stört es aktuell nicht. Wenn es ein wirkliches Problem für dich ist werde ich die Tage einen Workarround einchecken (also die Nachrichten unterdrücken). Es hängt damit zusammen wie ich die Relay Klasse verwende. Vermutlich gibt es hin und wieder einen kurzen falschen Impuls beim Stromsensor und danach schickt er wieder eine Statusnachricht. Die genaue Ursache kennen wir leider aktuell nicht.


Gruß,
Jan

frank

hallo jan,

mein hmlan geht halt alle 10-15 minuten in overload und dann gehen meine heizkörperventile (vd) schlafen, da sie über fhem gesteuert werden.

mach dir aber keinen stress deswegen. nachdem ich den schalter über set unpair von fhem getrennt habe, werden die messages nicht mehr gesendet. der schalter funktioniert aber weiterhin.

dass der intern gepeerte taster keine events sendet, verbuche ich dann auch mal unter bekannt. vielleicht besteht da ja auch ein zusammenhang.

wenn ich irgendwas testen kann, dann sag bescheid.

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

jab

Abend,

so ich habe heute den Bootloader mal finalisiert (https://github.com/jabdoa2/Asksin_OTA_Bootloader). Er funktioniert jetzt vollständig und handelt die meisten Übertragungsfehler besser als die Originalaktoren. Ich werde später noch ein README hinzufügen wie man ihn benutzt.

Dann kann ich jetzt endlich mal die übrigen Probleme mit dem Aktor debuggen. Zwei potentielle Timeroverflows habe ich schon im git gefixt.


Gruß,
Jan

peterk_de

Hui Cool :-) Ich - absoluter Arduino-Noob- bin zwar gerade noch beim Flashen deiner Firmware per Raspberry (bessergesagt beim Aufsetzen der Toolchain zum Build der Firmware - avrdude redet schon prima mit dem Schalter, Testbed steht auch schon bereit) - daher nur mal informativ: Wie wird der booloader denn dann mit der Firmware verheiratet? Flasht man den zusätzlich drauf? Sorry falls die Frage doof ist ;)
FHEM auf Ubuntu-VM / 2xNUC Proxmox Cluster
UI: HomeKit, TabletUI, Grafana
IOdevs: 2xHueBridge, RaspiMatic-CCU, CUL868, 2xHarmonyHub, 6xRaspi-Roomnode mit CO2, VOC und lepresenced
Devices: 107xHomematic(IP), 96xPhilips Hue, 17xTECHEM, 12xBTLE, 8xSONOS, 2xHomeConnect, 1xShelly 3em, 1xNanoleaf ...

jab

Abend,

Man flasht nur den bootloader und dann verwendt man den Homematic flasher um die Firmware zu schreiben. Entweder die ccu2, das Windows Ding oder flash-ota aus hmland. Ich dokumentiere noch wie man ein beliebiges Hex File konvertiert zum flashen.


Gruß
Jan

peterk_de

FHEM auf Ubuntu-VM / 2xNUC Proxmox Cluster
UI: HomeKit, TabletUI, Grafana
IOdevs: 2xHueBridge, RaspiMatic-CCU, CUL868, 2xHarmonyHub, 6xRaspi-Roomnode mit CO2, VOC und lepresenced
Devices: 107xHomematic(IP), 96xPhilips Hue, 17xTECHEM, 12xBTLE, 8xSONOS, 2xHomeConnect, 1xShelly 3em, 1xNanoleaf ...

jab

So Readme ist da. Hoffe das klappt alles so. Wenn nicht sag Bescheid!


Gruß,
Jan

peterk_de

OK:

build - klappt einwandfrei.
Flashen - klappt einwandfrei. 
Konvertieren des Firmware-.hex-Files - klappt nicht mit avr-objcopy; mit der .elf-Datei klappt es.

Anschließend blinkt die LED alle paar Sekunden für eine halbe Sekunde auf, sowohl mit 3.3V am Raspberry versorgt als auch wieder zusammengebaut am 230V-Netz.

Das flashen mit flash-ota klappt dann leider nicht. Er bleibt hängen bei "Waiting for device with serial LEQ007XXXXXX" (ich hab meine originale Seriennummer genommen)

Ich hab dann gleich einmal unter Windows probiert mit dem USB-CFG versucht zu flashen - und mir aus der eq3-Datei eine tar.gz mit changelog gebaut (sonst stürzt das Flash-Tool ab). Das geht auch nicht - er wartet aufs gerät, aber da zuckt nichts.

Das könnte nun vielleicht daran liegen, dass ich in der bootloader.c meine alte HMID nicht eingestellt habe, und da noch ABCDEF drinsteht, oder? *argh* Falls das so is muss ich dann morgen nochmal löten ;) Falls es aber so mit einer anderen Seriennummer gehen sollte wäre ich für jene dankbar ;)

Trotzdem sieht es an sich ja erstmal prima aus und ich bin voll des lobes auf Dich :)

FHEM auf Ubuntu-VM / 2xNUC Proxmox Cluster
UI: HomeKit, TabletUI, Grafana
IOdevs: 2xHueBridge, RaspiMatic-CCU, CUL868, 2xHarmonyHub, 6xRaspi-Roomnode mit CO2, VOC und lepresenced
Devices: 107xHomematic(IP), 96xPhilips Hue, 17xTECHEM, 12xBTLE, 8xSONOS, 2xHomeConnect, 1xShelly 3em, 1xNanoleaf ...

peterk_de

Ich hab den Code mal etwas weiter überflogen und mittendrin in Zeile 177 ne hardcodierte Seriennummer gefunden (?), aber mit KUS0123456 klappt's genausowenig - ich geb's für heute erstmal auf ;)

Edit: im Kommentar steht KUS0123456, senden tust du KEQ012345 wenn man aus der Nachricht mal ASCII macht ... Und vorn steht wohl die HMID auch nochmal hart drin ... Naja geht auch damit nicht - aber ich hab alles versucht was ich konnte ;)
FHEM auf Ubuntu-VM / 2xNUC Proxmox Cluster
UI: HomeKit, TabletUI, Grafana
IOdevs: 2xHueBridge, RaspiMatic-CCU, CUL868, 2xHarmonyHub, 6xRaspi-Roomnode mit CO2, VOC und lepresenced
Devices: 107xHomematic(IP), 96xPhilips Hue, 17xTECHEM, 12xBTLE, 8xSONOS, 2xHomeConnect, 1xShelly 3em, 1xNanoleaf ...