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

Hi Jan,

das war der richtige Tip! Ich hatte zwar die neueste .pm, aber offenbar eine Unverträglichkeit mit der einige Tage alten fhem-Version. Nach einem Update und neuem pairing geht jetzt alles! Super, vielen Dank.

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

trilu

Hallo Zusammen,

ich würde mal gerne den Punkt der Status Message aufgreifen.
Wenn das Device intern gepeert wird, wird ja keine Statusmessage vom Schalter gesendet. Soweit ich weiss, ist das ja Standard Verhalten von HM.
Es sollte doch aber eine Statusmessage vom Aktor, also dem Schaltkanal gesendet werden? Reicht die nicht, soll ich das in der Lib ändern?

Viele Grüße
Horst

jab

Hi trilu,

die Status Message der Aktoren wird immer an die Zentrale gesendet wenn das Gerät gepaired ist. Das klappt und ist auch bei original Geräten so.

Die Frage ist was mit Tastendrücken passiert. Ich habe in der Lib geändert, dass Nachrichten an das Gerät selber zusätzlich auch über Funk gehen. So kann FHEM den Tastendruck sehen auch wenn der Taster mit dem Aktor selber gepeert ist.

Wie ist eigentlich der Status der Lib? Gibt es da jetzt ein Format wie man sie komplett extern in die Arduino IDE einbinden kann oder ist das noch WiP? Dann könnte man über rebasen nachdenken. Habe auch noch einige Änderungen an der Lib gemacht und Probleme zu lösen.


Gruß,
Jan

trilu

brauchst du denn die statusmeldung des schalt kanals wenn der aktor dann sowieso einen status schickt?
ich verstehe das problem an der ecke noch nicht :-)

von der lib gibt es einen neuen stand incl. neuem interrupt handling für die schalter, das sollte jetzt kompatibel zum
644 sein. eigentlich für jede avm cpu, aber da muss ich noch durch ein paar datenblätter gehen.
firstload ist auch eliminiert und ist jetzt register bezogen.

die ganze lib ist jetzt näher am arduino standard und du könntest im example ordner einen neuen ordner
für deinen sketch erstellen. die register.h ist auch komplett geändert und somit auch die destillRegs.pm.
Register.h kann aber jetzt auch im example ordner bleiben.

mit dem testen bin ich noch nicht ganz durch und der aktor.cpp ist noch nicht angepasst...
ich werde mal heute abend oder morgen im github aktualisieren.

hast du dir im aktor.h/cpp mal das sensoren handling vorgenommen? bisher hatte ich ja nur die state maschine für
remote(40) events drin?

Viele Grüße
Horst

jab

Hi,

ich habe den Sensor recht einfach implementiert. Interrupthandler + eine Funktion. Daraus könnte man noch eine Klasse machen. In die Aktor.cpp will ich das nicht einbauen. Ich habe eher Funktionalität aus der Aktor.cpp rausgenommen damit man das ganze loser koppeln kann. Aktuell ist mir da noch viel zu viel untestbarer Code drin. Meine Idealvorstellung wäre so:

RL:
- RL macht das Handling der Statemaschine
- Callback für Statusänderungen (setzen des Relays)
- Methoden um Events zu triggern (das haben wir ja schon großteils)

Damit ist das nicht an Hardware gekoppelt und man kann das einfach Unittesten. HM kann man stubben. Habe da bei mir auch ein paar Sachen bei mir so geändert, damit ich das mit dem Sensor sauber implementieren kann.

BK:
- Callback für Tastendruck (haben wir)
- Methode um Status zu übergeben

So könnte man das auch testen. Das Interrupt/Input Handling kann man auch in eine Klasse packen, aber das ist bleibt dann untestbarer Code.

HM:
- Ist bereits gut testbar. LD und CC kann man stubben

CC:
- nur mit weiterer Hardware testbar
- aktuell leider mit neuen avr-g++ Versionen broken

LD:
- testbar durch subclassing
- muss man ggf nicht testen


Die neue Register.h habe ich auch nicht ganz verstanden aber an sich macht es für mich Sinn das als Variable zu passen. Gucke mir das die Tage mal an und schicke dir dann vermutlich einige Pullrequests.


Gruß,
Jan

trilu

Ich glaube ich habe meine Frage falsch gestellt :)
Die Relay Klasse reagiert ja derzeit nur auf remote events.  Das was noch fehlt um sie universell verwenden zu koennen muss hier noch das sensor event handling rein.  Meine frage war auf die relay klasse bezogen  8)

Schau dir mal meinen interrupt händler an.  Der ist so transparent wie mir möglich....
Was ist im cc broken?

Den grössten teil der funktionen ist getestet,  siehe codesnippets.txt

Das Zusammenspiel ist nicht besonders gut getestet.  Aber das werden wir nach und nach sehen...

jab

Abend,

getestet verstehe ich im Rahmen von Unit Tests. Die machen die Entwicklung wesentlich entspannter. Ansonsten bricht man zu schnell andere Sachen. Gerade beim Debuggen meiner mysteriösen Schalterprobleme haben sie mir geholfen den Grund zu finden.

Ich habe CC etwas angepasst damit es im 4.8er avc-gcc kompiliert. Da gab es deprecated Code/Schlüsselwörter. Das funktioniert danach bei mir mit dem alten gcc auch noch super. Allerdings klappt das Senden gar nicht mehr wenn man mit gcc 4.8 kompiliert. Alles andere scheint noch zu gehen. Habe ich noch nicht genau gedebuggt.


Gruß,
Jan

trilu

naja, die module sind selbstverständlich getestet - eben nicht das live zusammenspiel....

in der cc hatte ich auch mal einen blöden fehler, hat einfach nicht gesendet - letztendlich lags am setzen von einem kleinen delay in der init :-)

cc1101_Deselect();
delayMicroseconds(41);

cmdStrobe(CC1101_SRES); // send reset
delay(10);   <-----

#if defined(CC_DBG)
Serial << '1';

das funkmodul braucht ein klein wenig bis es den reset verdaut hat um dann initialisiert zu werden....

jab

Abend Horst,

ich habe dein git mal angeschaut. Sieht schon sehr gut . Wenn du durch bist fange ich mit Pull-Requests für ein paar Dinge die ich bei mir geändert habe.

Wo finde ich denn die Unit Tests? Ach ja und die Relay/RL Klasse fehlt auch noch oder?


Gruß,
Jan

trilu

Getestet habe ich immer die einzelnen schritte,  also klasse angefangen,  neue funktionen eingebaut und funktion via main sketch getestet.
Wenn es lief,  die testfunktionen verworfen....

An die relay class setz ich mich die tage ran...

Was ich auch noch ganz dringend einbauen möchte ist ein registar für die channel module
asksin class -> channel module pollen
asksin class -> peer add (um default werte setzen zu können)
asksin class -> peer event (um aktionen auslösen zu können)
asksin class -> config change (um parameter setzen zu können)
asksin class -> pointer auf list3 oder list4 übergeben
asksin class -> hm instanz übergeben um vom modul zugriff auf asksin funktionen zu haben, wie eben das senden von messages


jab

Moin Horst,

Defaults beim peer add habe ich bei mir eingebaut. Kannst du dir mal anschauen.


Gruß
Jan

daduke

@jab

Hi Jan,

Aktor 1 läuft mit Deinem .hex seit 2 Tagen bestens. Aktor 2 liegt für Tests mit gcc 4.8 bereit, solltest Du eine Idee haben, wo das Problem liegt.

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

Pelan

Hallo Zusammen,

da es im Thread nun etwas ruhig geworden ist wollte ich kurz nachfragen, ob jemand das Device mit der neuen Firmware dauerhaft im Einsatz hat und wie die Erfahrungen sind?
Ich möchte den Schalter in einer bestehenden Wechselschaltung einbauen, dazu brauche ich die Zusatzfunktion der Strommessung. Außerdem sollte über einen LongPress ein anderer Aktor geschaltet werden. Laut github sollte das funktionieren, gibt es dazu einen Praxistest?

Vielen Dank für die Antwort und vor allem für die Entwicklung einer alternativen Firmware!
Gruß,

Arndt

jab

Abend,

Ich benutze das Gerät aktiv. Aktuell gibt es noch Probleme mit dem letzten gcc aber das ist ein generelles Arduino Problem. Mit Ubuntu oder Windows gibt es keine Probleme.

Christian nutzt das Gerät glaube ich auch aktiv. Kann er vielleicht selber noch berichten.

Strommessung funktioniert. Also die Erkennung ob Strom fließt oder nicht. Messung ist nicht sehr genau. Das interval wie oft gesendet wird kann man  evtl noch senken.

Die Dauer vom langen bzw kurzem Druck kann man aktuell nur in der Firmware einstellen und nicht per Register.


Gruß
Jan

justme1968

ich hab meinen bausatz auch gestern bekommen. deshalb gleich noch eine frage :)

geht das mit der wechselschaltung auch schon ?

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968