reference: http://forum.fhem.de/index.php/topic,18071.msg275891.html#msg275891
änderungen in Asksin_HM_LC_Sw1PBU_FM.ino
in zeile 53 einfügen:
//- config button unsigned int ctrRepLg = 0; boolean enableSoftBoot = AUTO_BOOT;
zeile 98 ändern in:
bk[0].config(0,15,0,3000,5000,buttonState); // button 0 for channel 0 for send pairing string, and double press for reseting device config
zeilen 195-200 gegen diesen code tauschen:
// channel device
if (idx == 0) {
if (state == 0) { hm.ld.shortBlink(); }
if (state == 2) {
// long key press, start pairing hm.ld.shortBlink3(); hm.startPairing(); }
if (state == 3) {
(ctrRepLg == 3)? ctrRepLg = 1: ctrRepLg++;
if (ctrRepLg == 1)
{ hm.ld.shortBlink(); }
else if (ctrRepLg == 2)
{ hm.ld.shortBlink(); hm.ld.shortBlink(); }
else if (ctrRepLg == 3)
{ hm.ld.shortBlink(); hm.ld.shortBlink(); hm.ld.shortBlink();
} }
if (state == 4) {
if (ctrRepLg == 1) hm.recv_UpdateEvent();
else if (ctrRepLg == 2) enableSoftBoot = true;
else if (ctrRepLg == 3) enableSoftBoot = false; ctrRepLg = 0; }
if (state == 5) hm.reset();
// double long key press, reset the device }
änderungen in register.h
in zeile 26 einfügen:
#define AUTO_BOOT false // true/false => enables/disables software reboot by default
mit diesen änderungen hat der configtaster in der fw folgende funktionen:
-
short
einmal kurz drücken erzeugt einfaches blinken. ist aber weiterhin ohne funktion. -
long und double long
langes drücken, ab 3 sekunden, erzeugt nun 3-faches blinken. die anlernmessage wird gesendet. zum pairen kann man nun den taster loslassen. wird danach erneut lange gedrückt, wird weiterhin ein reset des schalters ausgelöst. die eepromdaten werden auf werkseinstellungen gesetzt. eigentlich alles wie bisher. ich habe nur eine rückmeldung mit 3-fachem blinken für das erreichen des pairing modus eingebaut. ausserdem ist das lange drücken von 5 sekunden auf nun 3 sekunden verkürzt, um die folgenden funktionen etwas schneller zu erreichen. -
multi long
der schalter hat nun ein “bootmenü” mit 3 menüoptionen. man gelangt in das menü, indem man das lange drücken des tasters über die ersten 3 sekunden verlängert. jede weiteren 3 sekunden erfolgt ein umschalten in eine weitere bootmenüoption. die augenblickliche option wird durch blinken angezeigt. 1 option 1x blinken, 2.option 2x blinken und 3. option 3x blinken. nach der 3. option gelangt man wieder in die erste option, usw … wird der taster nach dem jeweiligen blinken losgelassen, wird die entsprechende menüoption ausgeführt. die menüoptionen haben folgende bedeutung (optionen 2 und 3 sind hier noch funktionslos):
option 1: manueller reboot
option 2: enable software reboot (fhem kann durch set fwupdate das booten einleiten)
option 3: disable software reboot (das automatische booten wird verhindert, default)
beispiel1: um ein manuellen reboot des schalters auszuführen, muss man den taster 6 sekunden drücken. nach 3 sekunden erfolgt das 3-fache blinken für den pairingmodus und nach weiteren 3 sekunden erfolgt nun ein 1-faches blinken für das erreichen der ersten option des bootloadermenüs. nach dem blinken loslassen. da das menü zirkuliert erreicht man das manuelle booten auch nach 15 sekunden.
die optionen 2 und 3 sollen einmal zum automatischen update durch fhem dienen. nur wer seinen schalter über das manuelle konfigurieren dieses bootmenüs mit option 2 freigeschaltet hat, ermöglicht fhem ein automatisch gestartetes update über den befehl set fwUpdate. mit option 3 kann es dann wieder ausgeschaltet werden. mit der definition AUTO_BOOT true in register.h könnte man den defaultwert umstellen.
srec_cat /tmp/build5467976129337833754.tmp/Asksin_HM_LC_Sw1PBU_FM.cpp.hex -intel -fill 0xFF 0x0000 0xDFFE -Cyclic_Redundancy_Check_16_Little_Endian 0xDFFE -o /tmp/payload.bin -binary
php /home/ronny/sketchbook/Asksin_OTA_Bootloader/bin2eq3.php payload.bin payload.eq3
systemctl stop hmland
/opt/hmcfgusb/flash-ota -f payload.eq3 -s LEQ1293802