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

daduke

hmm das mit dem seriell wird nicht so einfach ohne Pegelwandler.. vorher noch ne andere Idee: könntest Du mir Dein .hex schicken, damit wir ein Compilerproblem ausschliessen können? Zum Flashen verwende ich

avrdude  -v -v -pm644 -cstk500v2 -P/dev/ttyACM0 -Uflash:w:/tmp/file.hex:i[\tt], das tut auf den panstamps wunderbar.

thanks,
-d
fhem auf pcengines apu, Philips Hue, MAX!, div. HomeMatic, Spark Core, panstamp, div. eigene Hardware

jab

Hi Christian,

ich verwende:

sudo avrdude -p m644 -P usb -c usbasp -V -U flash:w:Asksin_HM_LC_Sw1PBU_FM.cpp.hex


usbasp ist mein Programmer. Alternativ linuxspi auf dem Raspberry PI. Für den Seriell brauchst du 3,3V oder 5V Pegel.

Raw Messages in FHEM bekommst du so: http://forum.fhem.de/index.php/topic,16563.0.html
Dann sieht man ob da was über Funk kommt oder nicht.

Wie sehen deine Fuses aus? Hast du die ggf geändert? Meine sind so (wie original):

sudo avrdude -p m644 -P usb -c usbasp -v
[...]
avrdude: safemode: lfuse reads as FF
avrdude: safemode: hfuse reads as DA
avrdude: safemode: efuse reads as FD


Afaik ist die Ausgabe von avrdude hier buggy. Es gibt nur lfuse und hfuse. lfuse ist FD und hfuse DA.


Gruß,
Jan

jab

Anhängend ein Firmware Build von mir (ohne Serialoutput und firstLoad). Kannst du ja mal testen.


Gruß,
Jan

daduke

Hi Jan,

gerade nach Hause gekommen, Deine FW geflasht, und taucht sofort im fhem auf! Irgendetwas macht mein compiler wohl anders..

vielen Dank für Deine Hilfe, ich werde jetzt mal einen Aktor in Betrieb nehmen und dann mit dem anderen den Fehler suchen.

best,
-Christian
fhem auf pcengines apu, Philips Hue, MAX!, div. HomeMatic, Spark Core, panstamp, div. eigene Hardware

daduke

Hi Jan,

nochmals Tests gemacht mit beiden .hex-Files. Identisch geflasht, Deine geht, meine nicht. Irgendwas muss avr-gcc 4.8.2 noch anders machen. Anbei mal mein .hex, falls es Dich interessiert.

viele Grüße,
-Christian
fhem auf pcengines apu, Philips Hue, MAX!, div. HomeMatic, Spark Core, panstamp, div. eigene Hardware

jab

Moin Christian,

Ich schau mir das später mal an. Kannst du eine Version mit USE_SERIAL bauen? Vielleicht gibt es noch debug Output.


Gruß
Jan

daduke

Hi Jan,

klar, hängt an. Kein Stress, ich vergnüge mich derweil mit Deiner Version. Wenn ich Dich gerade dranhabe: ich habe noch ein Verständnisproblem zu den Events: auf Seite 9 habt Ihr's davon, dass die Buttons nur im ungepeerten Zustand events schicken. Ist das immer noch so? Ich hatte einen virtuellen Aktor dran, und dann kommen keine short und long presses. Meine HM-PB-2-WM55 und HM-PB-6-WM55 liefern aber auch mit virtuellem Aktor events. Wie ist da im Moment der Stand und die Idee? Ich würde wie auch von Sami erwähnt gerne den internen Aktor und anderen Krempel im fhem schalten - wie mache ich das dann am besten?

danke und Gruß,
-Christian
fhem auf pcengines apu, Philips Hue, MAX!, div. HomeMatic, Spark Core, panstamp, div. eigene Hardware

jab

Abend Christian,

aktuell schickt er immer die Nachricht über Funk. Auch dann wenn der Taster/Remote mit dem internen Aktor gepeert ist. Bei mir taucht dann jeder Tastendruck im Log auf. Wenn du einen virtuellen Aktor peerst sollten die Nachrichten auch ankommen. Das habe ich allerdings noch nicht ausprobiert.


Gruß,
Jan

jab

So ich habe dein Binary mal geflashed. Es startet und läuft. Man kann es per seriell bedienen. Leider scheint Funk nicht zu gehen. Der Output sieht auch etwas anders aus. Mysteriös! Möglicherweise hat es mit dem Zugriff auf Flashspeicher zu tun. Ich vermute, dass das CC1100 nicht richtig initialisiert wird.

Kannst du noch ein Binary bauen mit CC_DBG + USE_SERIAL drin und den Rest raus?

EDIT: Ich habe noch etwas mehr aufgeräumt. Ggf lag es an dem inline progmem. Da hat mein gcc schon notices geworfen. Habe das mal schön gemacht. Evtl geht das jetzt bei dir so. Probier mal wenn du Zeit hast.

Ich werde wohl die Register.h etwas aufräumen. Aktuell sind da noch total viele Variablen static und daher effektiv zwei mal im Binary vorhanden. Das braucht unnötig Speicher und führt potentiell zu Problemen.


Gruß,
Jan

daduke

Hi Jan,

hier CC_DBG + USE_SERIAL. Hast Du Deine letzten Änderungen gestern abend eingecheckt? Ich sehe nur changes 2+ days ago.

Mir fehlen immer noch die events. Wenn ich channel 1+2 an virtuellen Aktor peere, sehe ich dessen trigger, aber keine events. Ohne vAktor sehe ich gar nix. Hab mal nen screenshot aus fhem angehängt - könntest Du mal kurz drüber schauen, ob das so gut ist?

danke,
-Christian
fhem auf pcengines apu, Philips Hue, MAX!, div. HomeMatic, Spark Core, panstamp, div. eigene Hardware

jab

Hi Christian,

oh ja ich hatte gestern wohl vergessen zu pushen. Habe ich gerade nachgeholt. Evtl geht es damit.

Der Screenshot sieht gut aus. Events über den Status gibt es nur vom Aktor. Der Taster sendet direkt an seine Peers. Kannst du mal folgendes ausführen:

attr global verbose 1
attr global mseclog 1
attr <hmlan> logIDs all,sys

Und schicken was ankommt wenn du einen Taster drückst? Generell müsstest du auf deinen virtuellen Aktor ein Notify setzen und dann sollte der was tun können.


Gruß,
Jan

daduke

Hi Jan,

ok here we go. Habe gerade mit aktuellen src compiliert, radio scheint immer noch nicht zu gehen. Anbei das .hex mit CC_DBG + USE_SERIAL.
Hier die compiler warnings:
avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega644a -DF_CPU=8000000L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=105 -I/usr/share/arduino/hardware/jabduino/cores/arduino -I/usr/share/arduino/hardware/jabduino/variants/standard /tmp/build7686573892573325638.tmp/Asksin_HM_LC_Sw1PBU_FM.cpp -o /tmp/build7686573892573325638.tmp/Asksin_HM_LC_Sw1PBU_FM.cpp.o
In file included from AskSin.h:19:0,
                 from Asksin_HM_LC_Sw1PBU_FM.ino:2:
Register.h:348:13: warning: 'void mainSettings(uint16_t*, uint16_t*)' defined but not used [-Wunused-function]
static void mainSettings(uint16_t *regPtr, uint16_t *peerPtr) {
             ^
avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega644a -DF_CPU=8000000L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=105 -I/usr/share/arduino/hardware/jabduino/cores/arduino -I/usr/share/arduino/hardware/jabduino/variants/standard /tmp/build7686573892573325638.tmp/AskSin.cpp -o /tmp/build7686573892573325638.tmp/AskSin.cpp.o
AskSin.cpp: In member function 'void HM::getMainChConfig()':
AskSin.cpp:1520:10: warning: variable 'ret' set but not used [-Wunused-but-set-variable]
  uint8_t ret, peer[] = {0xff,0xff,0xff,0x00};        // some declarations
          ^
In file included from AskSin.h:19:0,
                 from AskSin.cpp:7:
Register.h: At global scope:
Register.h:249:17: warning: 'regMcPtr' defined but not used [-Wunused-variable]
static uint16_t regMcPtr[] = {
                 ^
Register.h:348:13: warning: 'void mainSettings(uint16_t*, uint16_t*)' defined but not used [-Wunused-function]
static void mainSettings(uint16_t *regPtr, uint16_t *peerPtr) {
             ^
  Using previously compiled: /tmp/build7686573892573325638.tmp/WInterrupts.c.o
  Using previously compiled: /tmp/build7686573892573325638.tmp/wiring.c.o
  Using previously compiled: /tmp/build7686573892573325638.tmp/wiring_analog.c.o
  Using previously compiled: /tmp/build7686573892573325638.tmp/wiring_digital.c.o
  Using previously compiled: /tmp/build7686573892573325638.tmp/wiring_pulse.c.o
  Using previously compiled: /tmp/build7686573892573325638.tmp/wiring_shift.c.o
  Using previously compiled: /tmp/build7686573892573325638.tmp/malloc.c.o
  Using previously compiled: /tmp/build7686573892573325638.tmp/realloc.c.o
  Using previously compiled: /tmp/build7686573892573325638.tmp/CDC.cpp.o
  Using previously compiled: /tmp/build7686573892573325638.tmp/HID.cpp.o
  Using previously compiled: /tmp/build7686573892573325638.tmp/IPAddress.cpp.o
  Using previously compiled: /tmp/build7686573892573325638.tmp/Print.cpp.o
  Using previously compiled: /tmp/build7686573892573325638.tmp/Stream.cpp.o
  Using previously compiled: /tmp/build7686573892573325638.tmp/Tone.cpp.o
  Using previously compiled: /tmp/build7686573892573325638.tmp/USBCore.cpp.o
  Using previously compiled: /tmp/build7686573892573325638.tmp/WMath.cpp.o
  Using previously compiled: /tmp/build7686573892573325638.tmp/WString.cpp.o
  Using previously compiled: /tmp/build7686573892573325638.tmp/main.cpp.o
  Using previously compiled: /tmp/build7686573892573325638.tmp/new.cpp.o
  Using previously compiled: /tmp/build7686573892573325638.tmp/HardwareSerial.cpp.o
avr-ar rcs /tmp/build7686573892573325638.tmp/core.a /tmp/build7686573892573325638.tmp/WInterrupts.c.o
avr-ar rcs /tmp/build7686573892573325638.tmp/core.a /tmp/build7686573892573325638.tmp/wiring.c.o
avr-ar rcs /tmp/build7686573892573325638.tmp/core.a /tmp/build7686573892573325638.tmp/wiring_analog.c.o
avr-ar rcs /tmp/build7686573892573325638.tmp/core.a /tmp/build7686573892573325638.tmp/wiring_digital.c.o
avr-ar rcs /tmp/build7686573892573325638.tmp/core.a /tmp/build7686573892573325638.tmp/wiring_pulse.c.o
avr-ar rcs /tmp/build7686573892573325638.tmp/core.a /tmp/build7686573892573325638.tmp/wiring_shift.c.o
avr-ar rcs /tmp/build7686573892573325638.tmp/core.a /tmp/build7686573892573325638.tmp/malloc.c.o
avr-ar rcs /tmp/build7686573892573325638.tmp/core.a /tmp/build7686573892573325638.tmp/realloc.c.o
avr-ar rcs /tmp/build7686573892573325638.tmp/core.a /tmp/build7686573892573325638.tmp/CDC.cpp.o
avr-ar rcs /tmp/build7686573892573325638.tmp/core.a /tmp/build7686573892573325638.tmp/HID.cpp.o
avr-ar rcs /tmp/build7686573892573325638.tmp/core.a /tmp/build7686573892573325638.tmp/IPAddress.cpp.o
avr-ar rcs /tmp/build7686573892573325638.tmp/core.a /tmp/build7686573892573325638.tmp/Print.cpp.o
avr-ar rcs /tmp/build7686573892573325638.tmp/core.a /tmp/build7686573892573325638.tmp/Stream.cpp.o
avr-ar rcs /tmp/build7686573892573325638.tmp/core.a /tmp/build7686573892573325638.tmp/Tone.cpp.o
avr-ar rcs /tmp/build7686573892573325638.tmp/core.a /tmp/build7686573892573325638.tmp/USBCore.cpp.o
avr-ar rcs /tmp/build7686573892573325638.tmp/core.a /tmp/build7686573892573325638.tmp/WMath.cpp.o
avr-ar rcs /tmp/build7686573892573325638.tmp/core.a /tmp/build7686573892573325638.tmp/WString.cpp.o
avr-ar rcs /tmp/build7686573892573325638.tmp/core.a /tmp/build7686573892573325638.tmp/main.cpp.o
avr-ar rcs /tmp/build7686573892573325638.tmp/core.a /tmp/build7686573892573325638.tmp/new.cpp.o
avr-ar rcs /tmp/build7686573892573325638.tmp/core.a /tmp/build7686573892573325638.tmp/HardwareSerial.cpp.o
avr-gcc -Os -Wl,--gc-sections -mmcu=atmega644a -o /tmp/build7686573892573325638.tmp/Asksin_HM_LC_Sw1PBU_FM.cpp.elf /tmp/build7686573892573325638.tmp/Asksin_HM_LC_Sw1PBU_FM.cpp.o /tmp/build7686573892573325638.tmp/AskSin.cpp.o /tmp/build7686573892573325638.tmp/core.a -L/tmp/build7686573892573325638.tmp -lm
avr-objcopy -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 /tmp/build7686573892573325638.tmp/Asksin_HM_LC_Sw1PBU_FM.cpp.elf /tmp/build7686573892573325638.tmp/Asksin_HM_LC_Sw1PBU_FM.cpp.eep
avr-objcopy -O ihex -R .eeprom /tmp/build7686573892573325638.tmp/Asksin_HM_LC_Sw1PBU_FM.cpp.elf /tmp/build7686573892573325638.tmp/Asksin_HM_LC_Sw1PBU_FM.cpp.hex
Binary sketch size: 25,526 bytes (of a 63,488 byte maximum)


dann der debug output von fhem:

2014.01.28 18:58:40.892 0: HMLAN_Parse: hmusb R:E208557   stat:0000 t:0AE1C7E1 d:FF r:FFC5     m:5C A410 208557 162534 0604000000
2014.01.28 18:58:41.820 0: HMLAN_Parse: hmusb R:E208557   stat:0000 t:0AE1CB84 d:FF r:FFC8     m:5D A240 208557 162534 0203
2014.01.28 18:58:41.921 0: HMLAN_Send:  hmusb S:SDA00CCE1 stat:  00 t:00000000 d:01 r:DA00CCE1 m:5D 8002 162534 208557 01010000
2014.01.28 18:58:42.204 0: HMLAN_Parse: hmusb R:RDA00CCE1 stat:0002 t:00000000 d:FF r:7FFF     m:5D 8002 162534 208557 01010000
2014.01.28 18:58:43.036 0: HMLAN_Parse: hmusb R:E208557   stat:0000 t:0AE1D03C d:FF r:FFC7     m:5E A410 208557 162534 0604000000
2014.01.28 18:58:44.924 0: HMLAN_Parse: hmusb R:E208557   stat:0000 t:0AE1D7A3 d:FF r:FFC9     m:5F A410 208557 162534 0604000000


2014.01.28 18:58:47.036 0: HMLAN_Parse: hmusb R:E208557   stat:0000 t:0AE1DFEE d:FF r:FFC6     m:60 A410 208557 162534 0604000000
2014.01.28 18:58:48.253 0: HMLAN_Parse: hmusb R:E208557   stat:0000 t:0AE1E4AC d:FF r:FFC4     m:61 A240 208557 162534 0103
2014.01.28 18:58:48.354 0: HMLAN_Send:  hmusb S:SDA00E602 stat:  00 t:00000000 d:01 r:DA00E602 m:61 8002 162534 208557 0101C800
2014.01.28 18:58:48.637 0: HMLAN_Parse: hmusb R:RDA00E602 stat:0002 t:00000000 d:FF r:7FFF     m:61 8002 162534 208557 0101C800
2014.01.28 18:58:50.365 0: HMLAN_Parse: hmusb R:E208557   stat:0000 t:0AE1ECDF d:FF r:FFCD     m:62 A410 208557 162534 0604000000

das sind 2 Tastendrücke.

Vermutlich verstehe ich einfach etwas nicht. Bei meinen HM-PB-2-WM55 habe ich nichts direkt gepeert, sondern mache alles über fhem:

define lampeBueroOff notify switchBuero_Btn_01.Short.* set Lampe on

Wenn ich das aber beim HM_LC_Sw1PBU_FM genauso versuche, reagiert der fhem-Aktor nicht. Geht nur direktes HM-peering? Oder eben der notify auf den vAktor?

danke,
-Christian

*NEU* jetzt auch mit Anhang...
fhem auf pcengines apu, Philips Hue, MAX!, div. HomeMatic, Spark Core, panstamp, div. eigene Hardware

jab

Hi Christian,

nach dem flashen verliert der Aktor alle seine Config. Vorgehen wäre also so (nach jedem flashen):
1. hmlan in pairing modus
2. config kurz drücken
3. Ab jetzt sollte jeder Tastendruck in FHEM zu sehen sein: Short (to hmusb)
4. peerings herstellen mit peerChan zu anderen Aktoren. Jetzt steht da sowas: Short (to CUL_HM_HM_LC_Sw1PBU_FM_CustomFW_208557)
5. peerChan zu deinem virtuellen Aktor. Ich finde das am saubersten

Wichtig sind 1 und 2 sonst schickt er nichts an die Zentrale. Das musst man nach jedem flashen machen (daher gibt es firstLoad).

Gruß,
Jan

daduke

Hi Jan,

danke. Ja genau so kenne ich das auch vom HM-PB-2-WM55.

1. check
2. check
3. im log: 2014.01.28 19:32:55 3: CUL_HM pair: aktorBuero remoteAndSwitch, model HM-LC-Sw1PBU-FM-CustomFW serialNr PS00000002
2014.01.28 19:32:55 2: CUL_HM set aktorBuero getConfig

4. beim device steht jetzt: PairedTo 0x162534
5. bei den channels aber nicht Short (to hmusb), sondern aktorBuero_Btn_01  ???, bei allen 4. Das Short (to hmusb) habe ich nur bei meinen anderen HM-Devices gesehen, hier noch nie. Das ist auch, wo ich hänge. Leider kenne/verstehe ich HM nicht gut genug, um da ne Idee zu haben.

danke,
-Christian

ok der smiley sind 3 Fragezeichen. Bekomme die hier nicht escaped.
fhem auf pcengines apu, Philips Hue, MAX!, div. HomeMatic, Spark Core, panstamp, div. eigene Hardware

jab

Hi Christian,

hast du die letzte Version der 99_Asksin_HM_LC_Sw1PBU_FM_CustomFW.pm in dein FHEM Verzeichnis kopiert? Ansonsten kann ich mir nicht erklären warum das nicht klappt. Die Messages sind beide im Funk da:


5D A240 208557 162534 0203
[...]
61 A240 208557 162534 0103

Die Firmware macht alles richtig. FHEM interpretiert das nur nicht.


Gruß,
Jan