Mahlzeit,
habe mir mit der AskSin++ Library zwei HM-LC-SW4-SM gebaut. Dafür folgenden Sketch auf China-Arduinos Mini Pro verwendet:
https://github.com/pa-pa/AskSinPP/blob/master/examples/HM-LC-SWX-SM/HM-LC-SWX-SM.ino
Um auch die 4 Buttons nutzen zu können, habe ich die Zeile
// #define HM_SENSOR_RELAY
auskommentiert.
Dann habe ich für die beiden Arduinos jeweils eine andere Device ID und Device Serial in diesem Block vergeben:
// define all device properties
const struct DeviceInfo PROGMEM devinfo = {
{0x12,0x34,0x56}, // Device ID
"papa000000", // Device Serial
{HM_LC_SW4_SM}, // Device Model
0x16, // Firmware Version
as::DeviceType::Switch, // Device Type
{0x01,0x00} // Info Bytes
};
Nun kommt das Kuriose:
Bei dem ersten Arduino funktioniert alles wie erwartet. Nach Pairing mit FHEM kann ich die Ausgänge sowohl mit FHEM, als auch mit den Buttons schalten.
Beim zweiten Arduino kann ich die Ausgänge per FHEM schalten, die Buttons funktionieren jedoch nicht :o
Es liegt nicht an der Hardware, denn wenn ich auf den funktionierenden Arduino die nicht funktionierende Serial+ID flashe, funktionieren die Buttons hier auch nicht mehr.
Ich kann über die serielle Konsole des Arduinos sehen, dass der Tastendruck erkannt wird. Es wird jedoch weder ein Ausgang geschaltet, noch etwas an FHEM gesendet (Config LED blinkt nicht).
Flashe ich wieder die funktionierende Serial+ID, so wird bei Tastendruck wieder der Ausgang geschaltet und FHEM über den Zustandswechsel informiert, was man an der blinkenden LED und auch in FHEM selbst sieht.
In FHEM habe ich für beide devices nichts weiter konfiguriert, nur gepairt.
Ich habe dann mal eine dritte Serial+ID getestet, doch auch hier funktionieren die Buttons nicht.
Woran könnte das liegen?
Danke euch!
Die internen Peerings werden nur beim ersten Start initialisiert oder wenn sich die Registerlisten ändern. Wenn Du nun nochmal eine andere ID drüber flashst, stimmen die Peerings nicht mehr. Einfach mal nen RESET (Conifgtaster mindesten 6 Sekunden drücken) machen. Dann sollten auch die Buttons wieder funktionieren.
Hervorragend, danke! Problem gelöst :)
Aber warum klappt es dann nicht nach dem neu Flashen des Arduino?
Ich vermute folgendes:
Die internen Pairings sind in FHEM gespeichert und konfigurieren den Arduino beim Starten. Auch ein frisch geflashter Arduino wird als dasselbe Device erkannt und erhält direkt wieder die "alte" Konfiguration. Drückt man den Config-Button am Arduino für 6s wird FHEM aufgefordert, alle Einstellungen zu löschen und läd diese dann wiederum zum Arduino hoch.
Stimmt das so?
Nein - das ist im EEprom. Der wird beim Flashen nicht gelöscht.
;D ;D ;D
Meine Erklärung klingt aber viel spannender ::)
Alles klar, danke!