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

Samsi

So,

mit der Arduino IDE 1.05 und dem ArduinoISP hat es jetzt geklappt. Die Firmware ist drauf. Das Ergebnis verstehe ich aber noch nicht so ganz.

Wenn ich jetzt die Wippe betätige kommen folgende Events:

2013-12-31 21:43:50 CUL_HM CUL_HM_ID_F0A9_5FB74A noReceiver: src:5FB74A B440 0104
2013-12-31 21:43:54 CUL_HM CUL_HM_ID_F0A9_5FB74A noReceiver: src:5FB74A B440 0202

Ist das normal so?

Ich hätte jetzt so etwas wie

CUL_HM CUL_HM_ID_F0A9_5FB74A btn1:long To  (HMLAN)

nach dem Pairen mir dem HMLAN erwartet.


Die Seriennummer sollte ich vermutlich auf ändern: /* Serial ID       10 byte */  'P','S','0','0','0','0','0','0','0','2', /

Was auch noch nicht klappt ist Set getConfig. Da gibt es bei mir einen RESPONSE TIMEOUT:RegisterRead  und  CMDs_done_Errors:1

Ich habe es auch mal probiert indem ich die Config Taste gedrückt hatte. Aber bei den Schaltern sollte das ja eigentlich nicht nötig sein, oder ist es bei dieser Firmware noch anders?

Auch toll wäre ein Feedback nach dem Einschalten der Stromzufuhr. Die Original Firmware blinkt hier drei mal.

Und ein LED Signal beim Pairen oder empfangen eines Konfigurationsbefehls wäre auch spitze ;)

Nur so als Vorschlag. Ansonsten schon mal cool das es überhaupt so weit geht und für mich als Arduino Neuling war es jetzt gar nicht so kompliziert.

Grüße

FHEM 5.5 / BBB Debian Wheezy

Homematic CFG-LAN

HM-Sec-MDIR / HM-Sec-SD / HM-Sec-WDS / HM-LC-Sw2-FM / HM-Sec-SC / HM-LC-Sw1PBU-FM / HM-SCI-3-FM / HM-Sec-Key / HM-RC-Key3-B / HM-LC-Dim1TPBU-FM /  HM-CC-RT-DN / HM-PBI-4-FM / HM-RC-Key4-2 / HM-ES-PMSw1-Pl / HM-LC-Sw4-WM

jab

Abend

am einfachsten ist es alles in der Register.h einzutragen. Da kannst du auch die peers eintragen (Achtung die Adressen sind genau falschrum letzte zwei Bytes, dann 5-6, dann 3-4 dann die ersten). Wenn du das sind firstLoad drin lässt schreibt er es bei jeden Boot ins Eeprom (alles geht verloren).. Peering habe ich beim Aktor erfolgreich in FHEM getestet. Bei den Rädern klappt es bei mir aktuell nur über Register.h aber sollte eigentlich auch per FHEM gehen.


Gruß
Jan

Samsi

Hallo Jan,

war das Deine Antwort auf meine Frage? Wenn ja, hab ich sie so verstanden:

Main Zentralen Pairing geht verloren weil das hier noch in firstLoad drin steht:

   reg.ch_0.intKeyVisib = 0;
   reg.ch_0.pairCentral[0] = 0x1A;
   reg.ch_0.pairCentral[1] = 0xB1;
   reg.ch_0.pairCentral[2] = 0x50;

und das ist eine andere Zentralen HMID als meine, nämlich 50b11A ?



Aber normale Aktoren kann ich über FHEM peeren, oder aber auch in die register.h eintragen, ich vermute dann hier:

peerdb[0][0] = 0x013BD621; // 21D63B
   peerdb[1][0] = 0x013BD621;
   peerdb[2][0] = 0x01563412; // 12345601

Wobei der erste Index wohl den channel angibt und der 2. index den peer.
Wenn ich also wollte das channel 0  mit zwei verschiedenen anderen Aktoren gepeert wird, müsste ich das so machen:

peerdb[0][0] = 0x013BD621;
peerdb[0][1] = 0x01bbccdd;


Aber besser firstload auskommentieren, weil sonst beim nächsten Start alles im EEPROM verloren geht, auch meine mit FHEM erstellten peerings.

Hab ich das so richtig verstanden?

aber was meinst Du damit:

Bei den Rädern klappt es bei mir aktuell nur über Register.h aber sollte eigentlich auch per FHEM gehen.


Grüße
FHEM 5.5 / BBB Debian Wheezy

Homematic CFG-LAN

HM-Sec-MDIR / HM-Sec-SD / HM-Sec-WDS / HM-LC-Sw2-FM / HM-Sec-SC / HM-LC-Sw1PBU-FM / HM-SCI-3-FM / HM-Sec-Key / HM-RC-Key3-B / HM-LC-Dim1TPBU-FM /  HM-CC-RT-DN / HM-PBI-4-FM / HM-RC-Key4-2 / HM-ES-PMSw1-Pl / HM-LC-Sw4-WM

jab

Ja genau. Ich meinte Taster (swipe auf dem Handy ). Da klappt das nicht per FHEM. Ich weiß nicht ob pairing geht. Habe ich nicht probiert. Trilu weiß das vielleicht.


Gruß
Jan

Samsi

Hallo,

gut ich hab die Register.h geändert und neu auf den Aktor hochgeladen.

Als Ziel habe ich mir einen Dimmer ausgesucht: HM-LC-DIM1T-FM

Allerdings muss der Empfänger ja auch noch was von dem Pairing wissen. Also wollte ich ihm das mit peerChan beibringen. Klappt aber nicht, weil weder der Sender mit der  alternativen Firmware in FHEM den befehl peerChan kennt noch der Empfänger HM-LC-DIM1T-FM. Die haben beide nur peerBulk, aber damit hat es nicht geklappt. Viellicht verstehe ich den Befehl auch nicht richtig.

GetConfig geht auf der alternativen Firmware auch nicht, deshalb zeigt er mir bei dem Device auch keine peers an, also weis ich auch nicht ob die peers die ich in register.h angelegt habe auch wirklich stimmen.


Jetzt weis ich nicht mehr weiter
FHEM 5.5 / BBB Debian Wheezy

Homematic CFG-LAN

HM-Sec-MDIR / HM-Sec-SD / HM-Sec-WDS / HM-LC-Sw2-FM / HM-Sec-SC / HM-LC-Sw1PBU-FM / HM-SCI-3-FM / HM-Sec-Key / HM-RC-Key3-B / HM-LC-Dim1TPBU-FM /  HM-CC-RT-DN / HM-PBI-4-FM / HM-RC-Key4-2 / HM-ES-PMSw1-Pl / HM-LC-Sw4-WM

jab

PeerChan sollte gehen in FHEM. Nutzt du denn Code von Martin oder meinen Initialen Code für FHEM?

GetConfig geht bei mir auch wenn ich die zentrale richtig eintrage. Da ist für Reihenfolge nicht gedreht in der Register.h. Allerdings muss FHEM das auch wissen also musst du danach noch mal den Config Taster drücken und CUL in den Lernmodus setzen.


Gruß
Jan

Samsi

ZitatNutzt du denn Code von Martin oder meinen Initialen Code für FHEM?

Ah, ich glaube darin liegt evtl. das Problem. Ich habe vorher ein FHEM Update gemacht und gehofft, das Dein "Model" automatisch erkannt wird, weil ich irgendwo gelesen hatte, das Du Dein eigenes model/typ in FHEM definiert hast. Tatsächlich steht nach dem anlernen in FHEM aber als Model: Unknown.

Bekomme ich Deinen Code nicht per FHEM Update? Kann ich den direkt im SVN ziehen?

Also das hier darf nicht gedreht sein?

   reg.ch_0.intKeyVisib = 0;
   reg.ch_0.pairCentral[0] = 0x1A;
   reg.ch_0.pairCentral[1] = 0xB1;
   reg.ch_0.pairCentral[2] = 0x50;

Ok, das hab ich dann noch falsch. Leider stand im Sourcecode nicht die HMID im Kommentar, deshalb dachte ich das wäre auch gedreht.
FHEM 5.5 / BBB Debian Wheezy

Homematic CFG-LAN

HM-Sec-MDIR / HM-Sec-SD / HM-Sec-WDS / HM-LC-Sw2-FM / HM-Sec-SC / HM-LC-Sw1PBU-FM / HM-SCI-3-FM / HM-Sec-Key / HM-RC-Key3-B / HM-LC-Dim1TPBU-FM /  HM-CC-RT-DN / HM-PBI-4-FM / HM-RC-Key4-2 / HM-ES-PMSw1-Pl / HM-LC-Sw4-WM

jab

Teste mal den Code von Martin. Nach einem update solltest du den einfach mit copy&paste in FHEM oben einfügen. Dann sollte er das Gerät erkennen.

Samsi

Also:

mit dem Code von Martin habe ich jetzt ein richtiges Model mit den 3 Channels.  Allerdings zeigt er im WebFrontend keine On/Off schalter an.

Nach dem Pairen habe ich auch meine Zentrale richtig drin:

PairedTo 0xA5D33E
R-pairCentral  0xA5D33E


GetConfig  geht aber immer noch nicht :  CMDs_done_Errors:1
Und peerIDs ist immer noch leer.

Beim Starten (Stromzufuhr) des aktors scheint er auch was zu senden, da kommt
2014-01-02_20:10:21 CUL_HM_HM_LC_Sw1PBU_FM_CustomFW_1EE9CB noReceiver: src:1EE9CB A410 0603000000

Und das kommt bei GetConfig
2014-01-02_20:17:12 CUL_HM_HM_LC_Sw1PBU_FM_CustomFW_1EE9CB NACK

Grüße
FHEM 5.5 / BBB Debian Wheezy

Homematic CFG-LAN

HM-Sec-MDIR / HM-Sec-SD / HM-Sec-WDS / HM-LC-Sw2-FM / HM-Sec-SC / HM-LC-Sw1PBU-FM / HM-SCI-3-FM / HM-Sec-Key / HM-RC-Key3-B / HM-LC-Dim1TPBU-FM /  HM-CC-RT-DN / HM-PBI-4-FM / HM-RC-Key4-2 / HM-ES-PMSw1-Pl / HM-LC-Sw4-WM

martinp876

hi Samsi,

was hast du jetzt eingegeben?
Bei welchen kanälen sollte on/off stehen?
sind die Kommandos für den kanal freigegeben?
webCmd wird bei einigen Entites automatisch gesetzt - aber evtl nicht bei self-made devices. da kannst du es selbst setzen


wenn duProbleme mit dem Protokoll hast solltest du auch ein paar messages anhängen - wie soll ich sonst etwas sehen?

Gruss Martin

Samsi

Hallo Martin,

was hast du jetzt eingegeben?
Die Befehle, so wie Du sie auf der Seite 3 hier in diesem Thread angegeben hast

Bei welchen kanälen sollte on/off stehen?
Danke das war der entschiedene Hinweis. Ich muss mich erst daran gewöhnen, dass das Device ja jetzt 3 Channels hat (vorher war es ja nur ein Device mit einem Channel). Und ich hab einfach das Device in meinen Raum Wohnzimmer gesetzt. Bei dem Channel 3 ist natürlich auch on/off im Web-Frontend. Ich werde mal heute Abend probieren ob wenigstens das schalten funktioniert, oder ob er die CMDs wie bei getConfig auch nicht ausführen kann.
Vielleicht komm ich dann weiter, und wenn nicht schau noch mal nach den Detaillierten Protokoll messages.

Grüße


FHEM 5.5 / BBB Debian Wheezy

Homematic CFG-LAN

HM-Sec-MDIR / HM-Sec-SD / HM-Sec-WDS / HM-LC-Sw2-FM / HM-Sec-SC / HM-LC-Sw1PBU-FM / HM-SCI-3-FM / HM-Sec-Key / HM-RC-Key3-B / HM-LC-Dim1TPBU-FM /  HM-CC-RT-DN / HM-PBI-4-FM / HM-RC-Key4-2 / HM-ES-PMSw1-Pl / HM-LC-Sw4-WM

jab

Moin,

Ich komme leider gerade nicht viel zum basteln. Ich werde die Anleitung noch erweitern und selbst mal alle Funktionen systematisch testen. Für mich tut es aktuell alles: Schalten und sich schalten lassen. Allerdings alles per register.h. Da ich aber auch noch einen Usecase für dynamisch Geänderte Peers habe werde ich mich darum auch noch kümmern. Wäre sehr cool wenn du eine Liste erstellst was bei dir geht und was nicht.


Gruß
Jan

Samsi

Hallo,

ich bin jetzt im code hierüber gestolpert:

struct {
        unsigned char nbrChannels;
        s_chDefType chDefType[4];
        } const devDef = {
        3 // number of channels
        ,{
                {1,0,0} // chn:0 type:regDev
                ,{2,6,4} // chn:1 type:regChan_remote
                ,{2,15,12} // chn:2 type:regChan_remote
                ,{0,24,20} // chn:3 type:regChan_actor
        }
};

Müsste da nicht 4 stehen? Wenn ich es auf 4 stelle, geht zumindest das getConfig durch, also CMDs Done.
Auch on und off geht durch, allerdings bleibt der state dann auf set_off bzw. set_on stehen.

Und was ich nicht ganz verstehe (wenn das mit den 4 channels oben stimmen sollte):

      peerdb[0][0] = 0x013BD621; // 21D63B
        peerdb[1][0] = 0x013BD621;
        peerdb[2][0] = 0x01563412; // 12345601


peerdb[0] wäre ja dann der cahnnel 0 von oben:    {1,0,0} // chn:0 type:regDev

Trotzdem zeigt er mir die peers 0 und 1 korrekt in btn_1 und btn_2 an, welche ja channel 1 und 2 sind.

Grüße
FHEM 5.5 / BBB Debian Wheezy

Homematic CFG-LAN

HM-Sec-MDIR / HM-Sec-SD / HM-Sec-WDS / HM-LC-Sw2-FM / HM-Sec-SC / HM-LC-Sw1PBU-FM / HM-SCI-3-FM / HM-Sec-Key / HM-RC-Key3-B / HM-LC-Dim1TPBU-FM /  HM-CC-RT-DN / HM-PBI-4-FM / HM-RC-Key4-2 / HM-ES-PMSw1-Pl / HM-LC-Sw4-WM

trilu

Die peer Database beginnt zwar bei 0 ist aber im Code auf Channel 1 verdrahtet. Ich wollte so resourcen schonend wie Möglich proggen. Hätte ich also die peer DB bei 0 beginnen lassen,  wären das bei 6 möglichen peers je Channel 24 verschenkte Bytes gewesen.
Ich bin gerade dabei das Register und Peer Handling der Library zu überarbeiten. Ich werde mir auch für das Firstload was besseres einfallen lassen.
Viele Grüsse
Horst

Samsi

Hallo trilu,

ok, das erklärt es. Dann ist also wie ich vermutet habe number of channels = 3 noch ein Fehler in Jans alternativer Firmware.

Ich habe übrigens die Firstload Sache einfach in den Codeblock

if (tmagicNumber != magicNumber) {}

verschoben, so das das Firstload nur nach einem Firmware update ausgeführt wird. Vielleicht solltest Du das auch so machen und dann zusätzlich noch ein restartLoad oder so ähnlich machen, das dann bei jedem Neustart ausgeführt wird.

Das Pairing der beiden Schalter mit einem andern Homematic aktor klappt jetzt jedenfalls. Nur der State vom aktor-channel 4 bleibt immer noch auf set_on stehen. Kann es sein, das es daran liegt, das ich den Aktor noch nicht Zusammengebaut habe, also die Platine für den 230 Volt Bereich habe ich nicht aufgesteckt.

EDIT: oder muss ich den Aktor channel auch mit irgend etwas peeren?
peerdb[2][0] = 0x01563412; // 12345601
hab ich nämlich auskommentiert, weil mir nicht klar war, womit ich das Peeren sollte.

Grüße
FHEM 5.5 / BBB Debian Wheezy

Homematic CFG-LAN

HM-Sec-MDIR / HM-Sec-SD / HM-Sec-WDS / HM-LC-Sw2-FM / HM-Sec-SC / HM-LC-Sw1PBU-FM / HM-SCI-3-FM / HM-Sec-Key / HM-RC-Key3-B / HM-LC-Dim1TPBU-FM /  HM-CC-RT-DN / HM-PBI-4-FM / HM-RC-Key4-2 / HM-ES-PMSw1-Pl / HM-LC-Sw4-WM