Alternative Firmware für HM-LC-SW2-FM ?

Begonnen von Klaus0815, 16 September 2017, 21:07:39

Vorheriges Thema - Nächstes Thema

Klaus0815

Hat hier schon jemand was gebastelt?

Habe folgendes Szenario:

HM-LC-SW2-FM ist hinter dem Haupt-Lichtschalter verbaut, Kanal 1 schaltet das Deckenlicht
Über den 2. Kanal will ich jetzt 3 Slaves schalten, aber so wie momentan, das die Slaves über Notify verzögert schalten, ist mehr als nervig.

In einem anderen Theread hat Papa für die Max-Schaltaktoren "mal kurz" was mit AskSin++ gebastelt, gibt es hierfür was vergleichbares?

Viele Grüße

Klaus


papa

Ich habe zwar nicht verstandenm was Du da genau machen willst und ob das nicht auch so gehr, aber zuerst müsste man mal checken, was da für ne Hardware drin ist.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

ZitatIch habe zwar nicht verstanden was Du da genau machen wills

Als ich es vor paar Jahren eingebaut hatte dachte ich ganz naiv man könne das Teil mit anderen AKtoren peeren , ein Tastendruck am HM-LC-SW2-FM schaltet andere AKtoren, aber das geht leider mit der Original-Firmware nicht oder wenn dann nur zeitverzögert über den  Umweg FHEM und notify
Eigentlich das gleiche Problem wie hier: https://forum.fhem.de/index.php/topic,76699.msg686096.html#msg686096


Zitataber zuerst müsste man mal checken, was da für ne Hardware drin ist

Ich hatte damals Fotos gemacht:
https://forum.fhem.de/index.php/topic,18071.msg159620.html#msg159620
Es ist wohl auch der ATMega32L, Anordung der Pins zum Flashen auch ähnlich wie beim Max-Zwischenstecker

Falls Interesse besteht würde ich das Teil noch mal ausbauen und schauen an welchen Pins die Eingänge und die Relais liegen.

papa

Ich glaube jetzt hab iich es.

Man müsste also noch zusätzlichen einen HM-PB-2-WM mit in den Switch integrieren. Dieser sendet parallel zum internen Schalten an gepeerte Geräte. Korrekt ?

Das geht derzeit leider nicht so einfach. Allerdings steht die Unterstützung von mehreren HM-Geräten auf einer Hardware auch schon länger auf meiner Liste. Mal sehen.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

Hier haben sie wohl 4 channels integriert:
https://wiki.fhem.de/wiki/HM-LC-Sw1PBU-FM_Alternative_Firmware

Ist das das Gleiche wie einen zusätzlichen HM-PB-2-WM mit einbauen?


papa

Zitat von: Klaus0815 am 17 September 2017, 10:59:44
Hier haben sie wohl 4 channels integriert:
https://wiki.fhem.de/wiki/HM-LC-Sw1PBU-FM_Alternative_Firmware

Ist das das Gleiche wie einen zusätzlichen HM-PB-2-WM mit einbauen?

Nein - dort wurde ein komplett neues Gerät entwickelt. Das benötigt dann auch eine eigene XML-Beschreibung für die CCU und ein eigenes Modul in FHEM. Das ist sicherlich die einfachere und elegantere Lösung.
Ich wollte versuchen 2 bekannte Geräte in einer Hardware unterzubringen. Dann braucht es keine neuen Module für FHEM oder CCU.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

papa

So - ich habe mich mal an eine CustomFirmware gemacht. Mit dem ATMega328 auf nem Steckbrett tut es schon. Das Device hat 2 Remote Channels und 2 Switch Channels. Die Taster schalten jeweils ein Relais und senden dann noch eine "normale" Remote-Message an alle gepeerten Geräte.

Ich bräuchte jetzt mal die Pins des originalen Gerätes für:


  • Relais 1
  • Relais 2
  • Taster 1
  • Taster 2
  • Config Taster
  • Led
  • Funkmodul
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Pfriemler

Es ist mir ein schieres Rätsel, wie man sich in derart kurzer Zeit mal eben so eine Firmware für ein Homematic-Gerät zusammenbacken kann, Respekt!
Zu den Infos: Das könnte schwierig werden, ich kann z.B. den Schaltplan nicht auftreiben, der scheint nicht veröffentlicht, und das Gerät habe ich selber nicht. Ich habe nur den von der Wandtaster-Version HM-LC-Sw2PBU-FM, dem eine solche Funktionalität natürlich auch gut zustünde. Laut ELV-Journalbericht-Foto lese ich da eher Atmel MEGA644P oder so ähnlich, im Text steht ATmega644A. Das Layout ist in vielem anders. Auch wenn Quarz und EEPROM ganz offensichtlich an den gleichen Pins hängen, glaube ich kaum, dass diese Infos hilfreich sind...
[1] = REL21, high-aktiv an PD4 (Pin13)
[2] = REL20, high-aktiv an PD5 (Pin14)
Taster 1 PD6(15) an GND, Taster 2 PD0(9), Config PD7(16) dito
LED von PB0(40) über 470R an GND
Funk GDO2(6) an PD3(12), GDO0(7) an PD2(11), CSn(8) an PB4(44), SI(3) an PB5(1), SO(5) an PB6(2), SCLK(4) an PB7(3).

Vielleicht lässt sich das ja so leichter an einem richtigen Gerät prüfen.
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

chipmunk

Klaus,
ich habe dein Problem noch nicht durchschaut:
- Willst du nur die Tastenbetätigung von Kanal 2, aber nicht das Relais nutzen? (Tastenbetätigung soll andere Peers schalten)
- Soll Betätigung von Kanal 1 die anderen Peers schalten, Kanal 2 diese aber auch unabhängig bedienen können?
- oder ist es ein ganz anderes Problem?

Falls es 1 oder 2 ist, könntest du die Eingänge des Aktors unbenutzt lassen und mit der Tasterschnittstelle HM-PB-2-WM das Ganze lösen. (Ist vielleicht nicht so elegant, wie den Aktor umprogrammieren, geht dafür aber out-of-the-box)
(Ich persönlich habe ein Problem damit, custom FW aufzuspielen, solange ich dafür aufwändig einen neuen Bootloader flashen muss. Erst, wenn das so wie mit der originalFW, d.h. ohne löten, geht, überlege ich mir das)

Chipmunk
RasPi3, HM, HUE, div 433MHz Baumarktdosen über Sende- und Empfangsmodule von C*, Ediplug

papa

Naja - das ist ja hier mehr nur ein Zusammmensetzen von bestehenden Teilen. Die FHEM-Seite ist da eher das Problem.

Derzeit hat die Lib noch keine Unterstützung für den ATMega644. Da gibt es sicherlich wieder kleine Unterschiede.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

papa

Zitat von: chipmunk am 28 September 2017, 08:28:59
(Ich persönlich habe ein Problem damit, custom FW aufzuspielen, solange ich dafür aufwändig einen neuen Bootloader flashen muss. Erst, wenn das so wie mit der originalFW, d.h. ohne löten, geht, überlege ich mir das)

Hm - eigentlich sollte der original Bootloader auch gehen. Wir müssen halt nur herausfinden, wo die Serial und die HMID abgelegt sind.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

ZitatIch bräuchte jetzt mal die Pins des originalen Gerätes für:

Ich werde das Teil die Tage noch mal zerlegen und die Pins herausfinden

ZitatKlaus,
ich habe dein Problem noch nicht durchschaut:
- Willst du nur die Tastenbetätigung von Kanal 2, aber nicht das Relais nutzen? (Tastenbetätigung soll andere Peers schalten)

genau das ist mein Problem, will über Kanal 2 verzögerungsfrei andere Peers schalten

ZitatFalls es 1 oder 2 ist, könntest du die Eingänge des Aktors unbenutzt lassen und mit der Tasterschnittstelle HM-PB-2-WM das Ganze lösen.

Hatte ich auch schon überlegt, leider ist absolut kein Platz mehr hinter dem Doppeltaster, Dosenboden ist schon ausgeschnitten.
Ich weiss auch nicht ob sich Sender und Empfänger so nahe beieinander vertragen, man könnte jetzt nur einen Kanal per Tasterschnittstelle steuern, aber es gibt auch keine Doppeltaster mit getrenntem L





Pfriemler

@papa: Dass der 644 erst mal nicht so umzuflashen geht, hatte ich vermutet. Aber vielleicht sind die Vorgaben hilfreich für eine Prüfung am Unterputzaktor, die Klaus ja noch vorhat. Möglich, dass das Pinlayout dort gleich ist.

Zitat von: Klaus0815 am 28 September 2017, 10:04:08
Ich weiss auch nicht ob sich Sender und Empfänger so nahe beieinander vertragen ...

Tun sie nicht. Direkte Kommunikation zwischen diesen beiden Geräten ist praktisch unmöglich - separat und aus der Entfernung weniger ein Problem. Deswegen wird ja auch beim Pairen und Programmieren immer von einem Mindestabstand zwischen Zentrale und Gerät gesprochen.
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

Klaus0815

So, habs ausgemessen - es ist genau gleich wie beim MAX-Zwischenstecker belegt, nur je 1 x zusätzlich Taster und Relais:

ie Belegung ist:

PB0   Relais 1
PB1   Relais 2

PA0   Taster 1
PA1   Taster2

PD4   LED

PB4   CS
PB5   MOSI
PB6   MISO
PB7   SCK

Die Programmierschnittstelle ist auch gleich belegt wie bem Max-Zwischenstecker

Configtaster gibt es hier keinen, Zitat aus der Anleitung:
ZitatDie Unterputzaktoren besitzen keine spezielle
Anlerntaste. Schließen Sie zum Anlernen geeignete
spannungsfeste Taster an die Tastereingänge an
(siehe Abschnitt Installation). Zum Anlernen an
einen bestimmten Kanal des Aktors halten Sie die
zugehörige Kanaltaste (beim Jalousieaktor eine der
beiden Tasten ▲ oder ▼ ) für etwa 4s lang gedrückt.
Dauerhaftes Blinken der Geräte-LED signalisiert den
Anlernmodus.
Wenn kein Anlernen erfolgt, wird der Anlernmodus
automatisch nach 20 Sekunden beendet.

Viele Grüße

Klaus





papa

Hm - dann geht da aber kein Long-Press :-(

Eigentlich brauchen wir aber auch keinen Config-Taster - man kann ja pairSerial verwenden. Oder wir nehmen beide Tasten gedrückt.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

ich würde sagen, ein pairserial reicht aus?
Longpress wäre für meinen Fall unwichtig, aber ich denke es ist doch für einige mit zusätzlichen Dimmern nützlich


papa

Kannst Du bitte mal noch prüfen, wie die Taster genau funktionieren. Also ob gegen Masse oder gegen Vcc geschalten wird ? Es wird ja irgendwie die 220V Wechselspannung in ein Eingangssignal für den Prozessor umgewandelt.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

ZitatKannst Du bitte mal noch prüfen, wie die Taster genau funktionieren.

Gar nicht so einfach auf die Schnelle-ist ein ziemlicher Verhau mit vielen Durchkontaktierungen, Widerständen...
Direkt mit anliegenden 230V messen will ich nicht unbedingt....

Aber die Tastersignale gehen über 2 Optokoppler, bei beiden ist jeweils ein Anschluss des Ausgangs an Masse, daher gehe ich von Pull-Up-Widerständen aus.

Ansonsten, wenn Du mir sagst wo ich das im Code ändern kann, wäre das wohl das kleinste Problem


Viele Grüße

Klaus

papa

So - wenn Du mutig bist, kannst Du mal die angehängte Firmware flashen.

Die Schritte sind wie beim Max! Zwischenstecker, aber mit den hier angehängten Dateien.

Damit FHEM mit dem neuen Device (ModelID 0xf2,0x01), muss noch das HMConfig_AskSinPPCustom.pm in den FHEM Folder gepackt und FHEM neu gestartet werden. Nach dem Pairen sollten 4 Channel vorhanden sein 1&2 sind die Taster - 3&4 die Schalter.  Die Channel 1&3 sowie 2&4 sind automatisch gepeert. Der Switch sollte wie vorher funktionieren - aber halt zusätzlich die Remote-Events senden bzw. zusätzlich gepeerte Geräte schalten.

Bin schon ganz gespannt, ob alles klappt.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

Hallo Papa,

könntest Du mir vielleicht auch direkt das Skript für die Arduino-IDE zur Verfügung stellen?
Habe damit auch den Max-Stecker geflasht, (In einem Schritt Bootloader und Firmware) ich glaube da tue ich mich leichter / schließe Fehlerquellen aus.

Viele Grüße

Klaus

papa

#20
Im Git

Bitte nicht vergessen das USE_OTA_BOOTLOADER Define zu entfernen.

Und die Lib aktualisieren
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

ZitatUnd die Lib aktualisieren

Sorry, da muss ich jetzt noch mal nachfragen was Du damit meinst?
TimerOne, EnableInterrupt und Low Power brauche ich ja nicht?
Die ATMega32-Definition ist weiterhin die von die hier:?
https://github.com/eaconner/ATmega32-Arduino

Viele Grüße
Klaus


papa

Zitat von: Klaus0815 am 06 Oktober 2017, 19:15:05
Sorry, da muss ich jetzt noch mal nachfragen was Du damit meinst?
TimerOne, EnableInterrupt und Low Power brauche ich ja nicht?
Die ATMega32-Definition ist weiterhin die von die hier:?
https://github.com/eaconner/ATmega32-Arduino

Viele Grüße
Klaus
Na die AskSinPP Library aus dem Master. Es wird keine weitere Lib benötigt. ATMega32 ist die selbe wie für den MAX!
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

ZitatSo - wenn Du mutig bist, kannst Du mal die angehängte Firmware flashen.

Ich war mutig :-)
erst mal natürlich der Klassiker - Elko im HM-LC-SW2 kaputt, auch mit der Original-Software zog das jeweilige Relais nur noch an, wenn der andere Kanal bereit an war

Habe jetzt Deine Software geflasht, funktioniert auch grob, irgend ein Fehler ist noch drin:
Ich vermute es hat was mit den Peers zu tun?

- Wenn ich von Hand, also am Taster die Kanäle schalte schalten die Relais, aber das Icon in FHEM ändert sich nicht
- Zum testen einen umgeflashten Max-Aktor gepeert - wenn ich jetzt am HM-LC-SW2 den entsprechenden Taster drücke geht der Max-Aktor an-aus-an oder aus-an-aus (ca. 1 sec Paise dazwischen), komischerweise aktualisiert sich danach das Icon in FHEM

gepeert habe ich per set HMLC2_Btn_2 peerchan 0 MaxAktor single set

bei den neuen Buttons und Switches des HM-LC-SW2 werden mir keine Peerchannels angezeigt?
ein set HMLC2_Btn_2 regSet intKeysVisib visib bringt als Fehlermeldung: intKeysVisib failed: supported register are dblPress expectAES longPress pairCentral peerNeedsBurst sign

Viele Grüße

Klaus


papa

Kannst Du die Serial anschließen und NDEBUG auskommentieren. Außerdem noch im DINIT() auf 19200 runterstellen. Dann sollte die Serial-Console die Debugdaten anzeigen.
Das FHEM-Modul hast Du installiert ? Wurden die 4 Kanäle angelegt ? Siehst Du die Messages der Taster in FHEM ?
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

ZitatKannst Du die Serial anschließen und NDEBUG auskommentieren.
Werde ich gleich morgen früh machen, geht Debug hier? Ich meinte bei den Max-Aktoren hattest Du es ganz weggelassen weil es ein Problem gab?

FHEM-Modul hab ich mit drin, alle 4 Kanäle sind da, ich sehe auch in FHEM wenn die Taster geschaltet werden.
Im FHEM-Log habe ich Meldungen wie:
2017.10.07 15:48:00.078 1: HM-LC-Sw2-FM-CustomFW02 is remote - entsprechend mit 01-04

Anbei ein paar Screenshots, vielleicht hilft es ja

papa

Zitat von: Klaus0815 am 07 Oktober 2017, 21:23:59
Werde ich gleich morgen früh machen, geht Debug hier? Ich meinte bei den Max-Aktoren hattest Du es ganz weggelassen weil es ein Problem gab?

Na es ändert auch jeden Fall das Timing. Aber wir wollen ja sehen, ob alles ordetnlich funktioniert. Ich habe bisher auch nur mit dem Mega328 getestet. Muss das mal auf den Mega32 tun. Ich vermute, dass da noch irgendein Timing nicht passt.

Zitat von: Klaus0815 am 07 Oktober 2017, 21:23:59
FHEM-Modul hab ich mit drin, alle 4 Kanäle sind da, ich sehe auch in FHEM wenn die Taster geschaltet werden.
Im FHEM-Log habe ich Meldungen wie:
2017.10.07 15:48:00.078 1: HM-LC-Sw2-FM-CustomFW02 is remote - entsprechend mit 01-04

Gibt es auch Meldungen wie
HM-LC-Sw2-FM-CustomFW04 is switch

Zitat von: Klaus0815 am 07 Oktober 2017, 21:23:59
Anbei ein paar Screenshots, vielleicht hilft es ja

Sieht jetzt erst mal noch so schlecht aus.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

Es ist doch nicht ganz so einfach wie gedacht - ich komme nicht an den UART ran.

Eigentlich müsste es doch gehen, das Ganze auf einem Max-Aktor zu testen? - Es fehlt dann halt ein EIngang, ein AUsgang

Ansonsten gerade entdeckt, vielleicht bestelle ich mal eins:
https://www.pollin.de/p/entwicklungsboard-atmel-atmega32-810361?utm_source=newsletter&utm_medium=email&utm_campaign=w20171008

papa

Ich vermiute, dass der Taster nicht duaerhaft geschlossen ist, wenn dieser gedrückt wird. Er wird möglicherweise mit der Wechselspannungsfrequenz von 50Hz öffnen und schliessen. Deshalb erkennt die software mehrere Betätigungen und versucht entsprechend zu Schalten. Ich muss mal sehen, wie ich das in die aktuelle Button-Implementierung ändern kann.

Das Board sieht interessant aus. Aber ich denke es liegt an der Schaltung der taster und das kannst Du damit leider nicht nachstellen.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

Ich habe noch ein bisschen weiter versucht, so ganz bin ich noch nicht hinter den Fehler gekommen:

- Der HM-LC-SW2 funktioniert mal genau wie er soll, dann nimmt er wieder keinerlei Tasten an, dann toggelt er den Max-Aktor alle 2 Sekunden
- Habe dann einen anderen Max-AKtor mit Deiner neuen Software geflasht, also die für den HM-LC-SW2:
    - geht erst mal wie es sein soll, dann irgendwann gleiches Verhalten wie oben, schickt ewig an-aus-an-aus im ca. 2sec-Rhythmus, nur Reset hilft
- den Fehler von gestern, das der Aktor genau 3 mal an-aus-an oder aus-an-aus geht hatte ich heute nicht, obwohl nichts an der Software geändert wurde

Hat es evtl. mit dem internen Peering zu tun? Die 2 sec sind ungefähr die Zeit bis der gepeerte Aktor seinen Empfang zurück meldet.
Hatte mal versucht den Aktor während des ständigen an-aus-an-aus lokal umzuschalten, das hat aber keinen Erolg

Müsste man evtl. den Peers explizit ein on / off statt eines toggles schicken?
(Glaube das wäre eh sinnvoller, sonst kann man nie mit dem zentralen HM-LC-SW2 gezielt alle Peers in die gleiche Stellung schalten? )

Viele Grüße

Klaus

papa

Zitat von: Klaus0815 am 08 Oktober 2017, 20:57:23
Ich habe noch ein bisschen weiter versucht, so ganz bin ich noch nicht hinter den Fehler gekommen:

- Der HM-LC-SW2 funktioniert mal genau wie er soll, dann nimmt er wieder keinerlei Tasten an, dann toggelt er den Max-Aktor alle 2 Sekunden
- Habe dann einen anderen Max-AKtor mit Deiner neuen Software geflasht, also die für den HM-LC-SW2:
    - geht erst mal wie es sein soll, dann irgendwann gleiches Verhalten wie oben, schickt ewig an-aus-an-aus im ca. 2sec-Rhythmus, nur Reset hilft
- den Fehler von gestern, das der Aktor genau 3 mal an-aus-an oder aus-an-aus geht hatte ich heute nicht, obwohl nichts an der Software geändert wurde

Hat es evtl. mit dem internen Peering zu tun? Die 2 sec sind ungefähr die Zeit bis der gepeerte Aktor seinen Empfang zurück meldet.
Hatte mal versucht den Aktor während des ständigen an-aus-an-aus lokal umzuschalten, das hat aber keinen Erolg

Also wenn ich das jetzt richtig verstanden habe, sollte ich das Verhalten mit einem MAX Stecker nachvollziehen können. Werde ich mir mal ansehen. Kann aber noch nicht sagen, wann ich dazu komme. Ist derzeit etwas wenig freie Zeit.

Zitat von: Klaus0815 am 08 Oktober 2017, 20:57:23
Müsste man evtl. den Peers explizit ein on / off statt eines toggles schicken?
(Glaube das wäre eh sinnvoller, sonst kann man nie mit dem zentralen HM-LC-SW2 gezielt alle Peers in die gleiche Stellung schalten? )

Hm, das geht aber nicht wirklich. Der Taster kann nur ein "Short-Press" oder "Long-Press" senden. Die Aktion wird dann beim Ziel über die Regsiter festgelegt.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

Also wenn ich das jetzt richtig verstanden habe, sollte ich das Verhalten mit einem MAX Stecker nachvollziehen können.

Ja, nur wie gesagt es tritt nicht immer auf, es geht 20 oder 30 mal ganz normal, dann fängt das an-aus-an-aus-Spiel an, die LED am sendenden AKtor blinkt dann auch bei jedem Schaltvorgang des Slaves kurz auf.




papa

Ich hatte den Fall jetzt auch einmal. So wie es aussieht, ist er da im LongPress hängen geblieben. Sprich er hat nicht mitgekriegt, dass der taster wieder losgelassen wurde. Dann hilft auch kein erneutest Drücken. Es wird immer fleissig LongPress gesendet und damit der Status gewechselt.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

papa

Damit die Seriale funktioniert, musst Du das hier beachten - ganz am Ende des Artikels.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

papa

Wenn der Status mehrfach wechselt, dann wurde das Ack vom Actor nicht empfangen und die Nachricht wird erneut gesendet. Da stimmt was in der Lib mit der Behandlung von doppelten Nachrichten noch nicht. Wahrscheinlich kommt das Ack auch zu schnell und der Sender befindet sich noch nicht wieder im Empfangsmodus. Muss ich nochmal genau checken.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

Ich bin ja schon mal froh das Du die gleichen Erfahrungen gemacht hast, mein Test-HM-LC-SW2 hat sich jeden Tag anders verhalten, mal wie gewollt, dann aus-an-aus, dann dauer-an-aus

Ich danke Dir auf alle Fälle schon mal für Deine Mühe, ist nicht selbstverständlich

Viele Grüße

Klaus

papa

Naja - das ist ja auch irgendwie sportlich :-)

und am Ende macht es die Lib nur robuster.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

papa

Kannst Du bitte mal die Änderungen der Lib ausprobieren. Ich stelle jetzt sicher, dass ein Gerät mindestens 100ms waretet, bevor es antwortet. Das sollte das Ping-Pong zwischen Taster & Aktor abstellen. Bitte beide Geräte mit der neuen Software versehen.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

#38
Hallo Papa,

habe die Änderungen mal ausprobiert, wir sind wesentlich weiter :-)

Aufbau war: 1 x Max-Aktor als "Empfänger", je 1 x HM-LC-SW2 und 1 x Max-Aktor als Sender

Test1:  sendenden Max-Aktor mit der neuen Lib als HM-LC-SW2 geflasht : keine Verbesserung
Test2: zusätzlich den empfangenden Max-Aktor mit der neuen Lib geflasht, funktioniert wie es soll
Test3: zusätzlich den HM-LC-SW2 mit der neuen Lib geflasht, funktioniert meist wie es soll

Funktioniert meist heisst, ich habe kein An-Aus-An-Aus mehr, der empfangende Max-Aktor funktioniert wie er soll, aber ich schaffe es nach ein paar mal an-aus am HM-LC-SW2 das dieser sich aufhängt.
Es dauert dann geschätzt 10 - 20 Sekunden, bis er wieder funktioniert
Wenn er sich aufgehängt hat geht auch der lokal gepeerte Kanal nicht mehr.

Was ist am HM-LC-SW2 anders? Letztendlich werden die 230V ja auch nur über Optokoppler zum Microcontroller geschaltet. Kann es was mit prellen der Taster zu tun haben?

Bin leider noch nicht dazu gekommen, das Ganze mit Original-AKtoren zu testen, letztendlich war die Problemlösung ja jetzt nicht am sendenden HM-LC-SW2 sondern das Ändern der Antwortzeit im empfangenden Aktor? Bin gespannt wie die Original-Aktoren damit umgehen.

Viele Grüße

Klaus

Klaus0815

Habe gerade noch fsetgestellt, das ein Longpress stndig den AKtor toggelt, sowohl lokal auls auch den anderen per Funk
Wohl das gleiche Thema wie im Asksin++-Thread?

Ich schaffe es auch, denr HM-LC-SW2 in einen Zustand zu bringen, in dem er auch nach loslassen der Taste ständig weiter toggelt.


Klaus0815

kurze Zwischenfrage noch zu einem anderen Projekt - bastle gerade an einer Steuerung mit 2 Fensterkontakten, die ich ver-odern muss
Hierfür eignet sich Dein Skript hier auf einem Max-Aktor ideal, da es 2 Kanäle zur Verfügung stellt.
Ich muss jetzt nur die beiden Kanäle aufs Gleiche Relais bringen
- Möglichkeit 1: Ich löte 2 Dioden zwischen die beiden Ausgänge vom ATMega zum Relais
- Möglichkeit 2: Was passiert wenn ich in Deinem Skript einfach
#define RELAY1_PIN 0 // PB0
#define RELAY2_PIN 1 // PB1

Einfach Relay 2 auf Pin 0 ändere? so das dann beide Kanäle das gleiche Relais schalten?

Müsste das so gehen?

Viele Grüße

Klaus

papa

Zitat von: Klaus0815 am 14 Oktober 2017, 10:44:28
Habe gerade noch fsetgestellt, das ein Longpress stndig den AKtor toggelt, sowohl lokal auls auch den anderen per Funk
Wohl das gleiche Thema wie im Asksin++-Thread?

Ich schaffe es auch, denr HM-LC-SW2 in einen Zustand zu bringen, in dem er auch nach loslassen der Taste ständig weiter toggelt.

Einfach das lgActionType Register beim self Peer auf inactive stellen.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

papa

Zitat von: Klaus0815 am 14 Oktober 2017, 17:02:47
kurze Zwischenfrage noch zu einem anderen Projekt - bastle gerade an einer Steuerung mit 2 Fensterkontakten, die ich ver-odern muss
Hierfür eignet sich Dein Skript hier auf einem Max-Aktor ideal, da es 2 Kanäle zur Verfügung stellt.
Ich muss jetzt nur die beiden Kanäle aufs Gleiche Relais bringen
- Möglichkeit 1: Ich löte 2 Dioden zwischen die beiden Ausgänge vom ATMega zum Relais
- Möglichkeit 2: Was passiert wenn ich in Deinem Skript einfach
#define RELAY1_PIN 0 // PB0
#define RELAY2_PIN 1 // PB1

Einfach Relay 2 auf Pin 0 ändere? so das dann beide Kanäle das gleiche Relais schalten?

Müsste das so gehen?

Meine Tablet-Powersteuerung arbeitet auch mit 2 Channels, die ein Relais schalten. Einer ist vom PIR - der ander für dauerhaft einschalten. Dazu habe ich folgenden Code - Channel 1&3 und 2&4 sind zusammengeschalten.


uint8_t cstat = 0;
uint8_t cmask[] = { 0b00000101, 0b00001010, 0b00000101, 0b00001010 };

// map number of channel to pin
// this will be called by the SwitchChannel class
uint8_t SwitchPin (uint8_t number) {
  switch( number ) {
    case 2: return RELAY2_PIN;
    case 3: return RELAY1_PIN;
    case 4: return RELAY2_PIN;
  }
  return RELAY1_PIN;
}

class SChannel : public SwitchChannel<Hal,PEERS_PER_CHANNEL> {

public:
  SChannel () : SwitchChannel<Hal,PEERS_PER_CHANNEL>() {}
  ~SChannel () {}

  virtual void switchState(__attribute__ ((unused)) uint8_t oldstate,uint8_t newstate) {
    uint8_t num = number()-1;
    uint8_t pin = SwitchPin(number());
    if( newstate == AS_CM_JT_ON ) {
      cstat |= 1 << num;
    }
    else if ( newstate == AS_CM_JT_OFF ) {
      cstat &= ~(1 << num);
    }
    if( (cstat & cmask[num]) != 0) {
      digitalWrite(pin,lowact ? LOW : HIGH);
    }
    else {
      digitalWrite(pin,lowact ? HIGH : LOW);
    }
    BaseChannel::changed(true);
  }
};
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

ZitatDazu habe ich folgenden Code - Channel 1&3 und 2&4 sind zusammengeschalten.

Meine Programmierkenntnisse sind leider zu schlecht um zu verstehen wo ich das Einfügen / wie ich es umbauen muss
Aber kein Problem, kann auch einfach Am ATMega 2 Dioden einlöten, die die beiden Ausgänge ver-odern.

Hast Du noch eine Idee woran es liegen kann das sich der HM-LC-SW2 teilweise für ein paar Sekunden aufhängt?

Viele Grüße

Klaus

papa

Zitat von: Klaus0815 am 15 Oktober 2017, 18:56:45
Hast Du noch eine Idee woran es liegen kann das sich der HM-LC-SW2 teilweise für ein paar Sekunden aufhängt?

Nö - passiert das auch ohne Tastendruck ?
Wenn bei einem Tastendruck der Pin mit 50Hz Netzfrequenz schwingt, könnte das schon einiges durcheinander bringen.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

ZitatNö - passiert das auch ohne Tastendruck ?

schwer zu sagen, er geht halt irgendwann für ein paar Sekunden nicht mehr.
Schwer, herauszufinden ob er sich dann schon davor aufgehängt hatte oder dieser eine Tastendruck der Auslöser war.

Ich vermute auch das es an den 50 Hz liegt, siehst Du eine einfache Möglichkeit das softwareseitig abzufangen?


papa

Zitat von: Klaus0815 am 15 Oktober 2017, 21:34:47
Ich vermute auch das es an den 50 Hz liegt, siehst Du eine einfache Möglichkeit das softwareseitig abzufangen?

Ich hoffe mal ja.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

papa

Bitte mal die Datei Pins.h durch die angehängte austauschen.
Ich versuche dort das möglicherweise schnelle An/Aus abzufangen.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

bin endlich dazu gekommen, das Ganze zu testen - leider nur bedingt besser

Der Aktor reagiert manchmal nicht auf Tastendruck, nach ca. 5 - 10 sec reagiert er wieder

Ich bilde mir aber ein, das der Fehler jetzt seltener auftritt und auch die Zeit bis er wieder reagiert kürzer geworden ist.

Interessant ist evtl. noch, das wenn die Tasten nicht funktionieren ich ihn trotzdem noch per Funk / FHEM steuern kann.
Senden tut er aber bei ignoriertem Tastendruck nichts

Hast Du vielleicht sonst noch eine Idee?

Viele Grüße
Klaus

papa

Hm - da muss ich mir mal irgendwas zusammenbauen, damit ich auch Impulse auf dem Taster habe.

Du könntest mal noch probieren, die Anzahl der Änderungen, die benötigt werden um Zurückzuschalten, zu erhöhen. Die '3' in Zeile 80 & 85 auf 6 erhöhen. Vielleicht auch mal den Takt der 'sysclock' erhöhen , damit öffter geprüft wird.

#define TICKS_PER_SECOND 200UL

am Anfang des Sketches. Oder beides.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

Ich werde das gerne mal probieren, allerdings glaube ich nicht so recht dass das die Ursache ist - würde ein Tastimpuls nicht richtig erkannt, würde ja der nächste wieder gehen.

Aber es ist so, das plötzlich für mehrere Sekunden nichts mehr geht,

Das ganze passiert auch nach einer längeren Pause, in der ich nichts gedrückt hatte - keine Reaktion auf den Tasterdruck, nach ein paar Sekunden geht es dann wieder,

Vielleicht noch eine ganz dumme Idee und ich mache was falsch? Eigentlich müsste der Aktor doch nach einem neu flashen komplett gelöscht sein, alle peers verschwunden - das ist aber komischerweise hier nicht so? Liegt es evtl. an einem falschen pairing / peering? Glaube zwar nicht, aber nur mal so als Idee


papa

Konntest Du schon mal probieren ? Ich hoffe, ich komme am WE mal dazu, mit mit einem programmierten Tiny einen Takt an den Taster zu legen. Damit sollte sich das dann hoffentlich simulieren lassen.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

Leider noch nicht, ich hoffe am Wochenende.
Was sagst Du zu meiner Theorie, das es daran kaum liegen kann, da ja teilweise schon der erste Tastendruck nicht mehr erkannt wird?


papa

Ich hoffe immer noch auf die Abtastrate. Der Standardtakt sind 100 TicksPerSecond. Wenn man da einen blöden Zeitpunkt erwischt, messen wir immer am Anfang und am Ende der positiven Halbwelle. Und da könnte der Optokoppler noch nicht durchgeschaltet sein. Dann sehen wir den Impulse nicht. Durch Erhöhung der Abtastrate, haben wir mehr Messungen und und geht nichts mehr verloren.

Der EEProm-Inhalt bleibt beim Flashen erhalten - damit bleiben auch die Peerings. Wenn das Peering nicht passt, dann geht es immer nicht.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

ZitatWenn man da einen blöden Zeitpunkt erwischt, messen wir immer am Anfang und am Ende der positiven Halbwelle.
Dann würde es aber mal funktionieren, mal nicht?  Wenn es mal nicht funktioniert hat funktioniert es reproduzierbar die nächsten 5-15 sec nicht, danach geht es wieder normal, irgendwas muss sich da im Programm aufhängen?
Werde aber trotzdem mal Deine Vorschläge testen, hatte auch schon überlegt die Optokopplerausgänge direkt zu brücken, aber da kommt man bei der Sandwichbauweise gar nicht so einfach dran.
Und UART-Ausgang zum debuggen ist halt noch schwieriger mit den anliegenden 230V

Viele Grüße

Klaus

Klaus0815

Die beiden Änderungen haben leider nichts gebracht.
Bin kurz davor, einen weiteren Aktor zu kaufen, nicht das es letztendlich an der Hardware liegt.

Schade das hier niemand das gleiche Problem hat und die Software mal testen mag

papa

Also ich habe jetzt hier ebenfalls einen Takt auf den Taster gelegt. Das bringt bei mir aber die Firmware nicht aus den Takt.

Probiere doch mal bitte das angehängte Hex-File. Wäre nicht das erste mal, das meines geht aber das selbst übersetzte nicht.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

Ist das Hex-File incl. Bootloader oder muss ich erst den Bootloader, dann das File per OTA flashen?

papa

BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

gar nicht so einfach, versuche es gerade mit AVRDude unter Windows
In der Arduino IDE wird dieser mit
avrdude -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega32 -cstk500v1 -PCOM7 -b19200 -Uflash:w:C:\Users\TOUCHV~1\AppData\Local\Temp\arduino_build_537830/HM_LC_SW2_FM.ino.hex:i
aufgerufen, aber bei mir kommt dann
avrdude: can't open config file "C:\Program": No such file or directory

das config file liegt aber definitiv dort

Habe leider in der Werkstatt nur einen Windows-PC, aber ich kämpfe mich durch

Viele Grüße

Klaus

Omega-5

Zitat von: Klaus0815 am 01 November 2017, 12:11:44
gar nicht so einfach, versuche es gerade mit AVRDude unter Windows
In der Arduino IDE wird dieser mit
avrdude -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega32 -cstk500v1 -PCOM7 -b19200 -Uflash:w:C:\Users\TOUCHV~1\AppData\Local\Temp\arduino_build_537830/HM_LC_SW2_FM.ino.hex:i
aufgerufen, ...

Hallo KLaus,

Pfade die Leerzeichen enthalten, bitte in Anführungszeichen setzen! (Windows)

avrdude -C"C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf" -v -patmega32 -cstk500v1 -PCOM7 -b19200 -Uflash:w:C:\Users\TOUCHV~1\AppData\Local\Temp\arduino_build_537830/HM_LC_SW2_FM.ino.hex:i

Gruß Friedrich
RaspberryPi2, nanoCUL, 3x DS18B20, FS20: 4x Funk-Schalter ST-4, LaCrosseGW,
HomeMatic: HMLAN, HM-WDS10-TH-O, HM_MYS_RelaisBoard,
I2C: HYT221 über modifiziertes Modul I2_I2C_SHT21.pm (Q&D),

Klaus0815

Hallo Friedrich, danke, das wars, dachte erst es liegt am Schrägstrich vor etc/avrdude, keine Ahnung warum die Arduino IDE das falsch darstellt

Klaus0815

Hallo Papa,

danke, einen großen Schritt weiter, mit Deiner Hex hängt es sich nicht mehr auf.
Liegt wohl irgendwie an der Arduino-IDE, keine Ahnung was da anders ist.

Ein Problem habe ich noch, Sw01 und Sw02 schalten jetzt beide Relais 1, ist das evtl. eine Testversion von Dir?

Viele Grüße
Klaus


papa

Zitat von: Klaus0815 am 01 November 2017, 12:50:10
danke, einen großen Schritt weiter, mit Deiner Hex hängt es sich nicht mehr auf.
Liegt wohl irgendwie an der Arduino-IDE, keine Ahnung was da anders ist.

Na das höre ich doch gern  :D

Zitat von: Klaus0815 am 01 November 2017, 12:50:10
Ein Problem habe ich noch, Sw01 und Sw02 schalten jetzt beide Relais 1, ist das evtl. eine Testversion von Dir?

Hm ....... mal schaun .......


  sdev.sw1Channel().init(RELAY1_PIN,false);
  sdev.sw2Channel().init(RELAY1_PIN,false);


würde mal sagen er macht genau, was im Code steht. Arg - Computer sind soooo dumm. Könnte er doch selber merken, dass Channel 2 das andere Relay schalten soll   8)
Ich schicke Dir heute Abend mal ne neue Version.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

Die jetzige Version wäre genau die gewesen die ich für meine Dunstabzugshaube mit 2 Fensterkontakten gebraucht hätte  :) - bitte nicht löschen, vielleicht nutzt es ja noch mal jemand.
(Habs jetzt mit 2 Dioden gelöst)

Habe versucht Eclipse zu installieren, aber warte wohl besser auf Deine neue Version.


papa

Zitat von: Klaus0815 am 01 November 2017, 18:07:52
Die jetzige Version wäre genau die gewesen die ich für meine Dunstabzugshaube mit 2 Fensterkontakten gebraucht hätte  :) - bitte nicht löschen, vielleicht nutzt es ja noch mal jemand.
(Habs jetzt mit 2 Dioden gelöst)

Naja nicht ganz. Da auch sofort ausgeschalten wird, wenn ein Kanal auf off geht.

So hier nochmal eine Version mit beiden Relays und zum direkten Flashen. Wenn das alles geht, machte ich nochmal eine OTA-Version.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

Hallo Papa,

die neue Version funktioniert, die Taster reagieren wie gewollt :-)

Leider gibt es jetzt das nächste Problem:
Habe dann 2 Aktoren gepeert - toggle durch Shortpress geht erst mal, sobald man aber aus Versehen ein Longpress auslöst, wird dieses ständig an beide AKtoren gesendet, das interne Relais klickt fleissig mit.
Beenden lässt sich das Ganze dann nur noch durch Strom wegnehmen.

Solange nur ein Aktor gepeert ist funktioniert es wie es soll.

Viele Grüße

Klaus




papa

AskSin++ verhält sich noch nicht ganz korrekt beim Long-Press mit mehreren Peers. Das diskutieren wir auch gerade hier.
Hattest Du originale HM-Geräte gepeert oder AskSin++-Geräte ?
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

Hatte beides versucht - 2 Original-Geräte oder 1 x Original, 1 x ASKSin++, verhält sich gleich

Klaus0815

Dann hoffe ich mal das ihr das noch hinbekommt :-)

Das Longpress in den Aktoren zu ignorieren wird vermutlich nichts bringen?


papa

Kriegen wir schon hin. Bin da guter Dinge.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

papa

So - hätte nochmal ne Firmware zum Testen. Wieder einfach flashen.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

#72
Hallo Martin,

gerade getestet, es geht :-) Was hast jetzt geändert?

Das einzige was mir jetzt noch aufgefallen ist, bei Sw 02 wird in FHEM der Status nicht aktualisiert, aber nur bei Tastendruck, nicht wenn ich in FHEM on/off schalte
Er sendet auch nichts / keine DeviceMsg

Viele Grüße

Klaus


papa

Oh - dann muss ich wohl auch mal den 2. Tester bei mir auf dem Breadboard anschliessen  :)
Kriegen wir auch noch hin.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

Ich bin mir nicht sicher, aber glaube das ging bei den bisherigen Versionen, der Fehler ist neu

Klaus0815

Ist es vielleicht das gleiche Problem wie im AskSin++ Tread beschrieben? Da geht wohl auch bei Jochen der Taster 2 nicht?

Viele Grüße

Klaus

papa

Zitat von: Klaus0815 am 12 November 2017, 16:40:07
Ist es vielleicht das gleiche Problem wie im AskSin++ Tread beschrieben? Da geht wohl auch bei Jochen der Taster 2 nicht?

Viele Grüße

Klaus

Nehme ich mal stark an. Diese Woche komme ich aber nicht dazu. Muss noch etwas warten.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

papa

Also ich habe das hier gerade mal probiert. Auf dem Breadboard gehen beide Taster. Stimmen denn die Pins PA0 & PA1 ?
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

Die Pins müssen stimmen,  es geht ja das schalten der lokalen Relais.
Das einzige was nicht geht ist die Rückmeldung an FHEM, sobald der Taster gedrückt wurde.
Wird der Schaltvorgang per Funk / FHEM ausgelöst, passt es auch, nur wie gesagt lokal nicht

Viele Grüße

Klaus

papa

BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

gute Frage, ich hatte es damals als Du die erste Version hier eingestellt hast reinkopiert, hast Du seither was verändert?

Kann es aber gerne morgen noch mal austauschen


papa

Da hat sich mit Sicherheit nochmal einiges geändert.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

Bin leider jetzt erst dazu gekommen, das andere FHEM-Modul zu testen, hat leider nichts gebracht.
Es ist weiterhin so, das Switch 2 in FHEM nicht aktualisiert wird, wenn er lokal gedrückt wird.

Ist für mich / meine Anwendung nicht schlimm, aber wäre sicher trotzdem interessant, herauszufinden woran es liegt

ZitatAlso ich habe das hier gerade mal probiert. Auf dem Breadboard gehen beide Taster.
Geht dann bei Dir auch die Rückmeldung an FHEM, das Relais 2 geschaltet wurde?

Viele Grüße

Klaus


papa

Zitat von: Klaus0815 am 24 November 2017, 18:44:55
Bin leider jetzt erst dazu gekommen, das andere FHEM-Modul zu testen, hat leider nichts gebracht.
Es ist weiterhin so, das Switch 2 in FHEM nicht aktualisiert wird, wenn er lokal gedrückt wird.

Hast Du das Modul auch neu geladen bzw. FHEM neu gestartet ?

Zitat von: Klaus0815 am 24 November 2017, 18:44:55
Ist für mich / meine Anwendung nicht schlimm, aber wäre sicher trotzdem interessant, herauszufinden woran es liegt
Geht dann bei Dir auch die Rückmeldung an FHEM, das Relais 2 geschaltet wurde?

Ja - ich sehe sowohl den Short-Press des Tasters, asl auch die Änderung des SwitchChannels.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

ZitatHast Du das Modul auch neu geladen bzw. FHEM neu gestartet ?

Ja, habe FHEM neu gestartet
Werde mal versuchen den Aktor neu zu pairen, ansonsten baue ich ihn halt so wieder ein :-)


papa

Zitat von: Klaus0815 am 24 November 2017, 21:42:35
Ja, habe FHEM neu gestartet
Werde mal versuchen den Aktor neu zu pairen, ansonsten baue ich ihn halt so wieder ein :-)
[/quote

Vorher aber noch auf OTA umstellen. Soll ich das Image nochmal für OTA machen ?
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Klaus0815

Habe den Fehler mit der fehlenden Rückmeldung an FHEM gefunden:

Der jeweilige AKtorkanal muss mit irgendwas gepeert sein, dann funktioniert es.
Habe es jetzt mit einem Kanal der virtuellen CCU gepeert, Rückmeldung geht

Viele Grüße

Klaus