Es handelt sich bei der Neuentwicklung um einen 3x Schalter für Betrieb an einem Netzfreischalter. Der vierte Kanal wird für die hybride Akkuladefunktion und die Netzspeisung verwendet.
Der Sketch (bitte .txt entfernen) des Derivats passt zu der Platine HB-UNI-SenAct-4-4-SC_DS_FUEL4EP. Bei der schon publizierten SC-Version des Sketches HB-UNI-SenAct-4-4-SC_DS funktioniert das Peering der Gerätetasten und ein Drücken der Gerätetasten löst die entsprechende Relaisschaltfunktion aus. Hinweis: Die aktuelle Giithub Version is buggy. Das ist in meiner lokalen Version schon korrigiert.
Der in der Testphase befindliche Sketch HB-UNI-SenAct-4-4-RC_DS funktioniert bis auf das Peering der vier Gerätetasten: Ein Drücken auf eine Gerätetaste wird erkannt, löst aber keinen Schaltvorgang aus. Hier die Ausgabe des seriellen Monitors nach einem Werksreset:
Code: Alles auswählen
13:12:53.374 -> debounce
13:12:53.473 -> pressed
13:12:56.592 -> longpressed
13:13:00.509 -> longpressed
13:13:00.509 -> RESET
13:13:00.542 -> AskSin++ v5.0.2 (Aug 4 2023 12:56:51)
13:13:00.542 -> Address Space: 32 - 561
13:13:00.542 -> 00000000
13:13:00.542 -> Init Storage: CAFEEC08
13:13:02.635 -> Radio init1
13:13:02.635 -> CC Version: 14
13:13:02.635 -> - ready
13:13:02.635 -> Init HAL ..
13:13:03.465 -> .. creating peerings now
13:13:03.465 -> .. devid = 00F61001
13:13:04.062 -> Battery set low: 46
13:13:04.062 -> Battery set crit: 44
13:13:04.128 -> accumulator voltage(MCU ADC) (x1000.0) [mV] : 4971
13:13:04.162 -> Activate Cycle Msg
13:13:04.195 -> <- 0E 01 86 10 F61001 000000 06 01 00 00 00 - 3674
13:13:04.294 -> <- 0E 02 86 10 F61001 000000 06 02 00 00 00 - 3772
13:13:04.361 -> Switching pin delayed back to inactive state: 3
13:13:04.394 -> <- 0E 03 86 10 F61001 000000 06 03 00 00 00 - 3872
13:13:04.493 -> <- 0E 04 86 10 F61001 000000 06 04 00 00 00 - 3973
13:13:08.740 -> 07 debounce
13:13:08.773 -> BATTERY IS LOW? 0
13:13:08.806 -> 07 pressed
13:13:08.806 -> BATTERY IS LOW? 0
13:13:09.138 -> 07 released
13:13:09.138 -> BATTERY IS LOW? 0
13:13:09.138 -> -> 0B 07 02 40 F61001 F61001 07 00 - 8595
13:13:09.271 -> <- 0B 07 86 40 F61001 000000 07 00 - 8718
13:13:09.271 -> 07
13:13:09.271 -> BATTERY IS LOW? 0
13:13:11.661 -> 06 debounce
13:13:11.661 -> BATTERY IS LOW? 0
13:13:11.695 -> 06 pressed
13:13:11.728 -> BATTERY IS LOW? 0
13:13:11.993 -> 06 released
13:13:12.026 -> BATTERY IS LOW? 0
13:13:12.026 -> -> 0B 0B 02 40 F61001 F61001 06 00 - 11472
13:13:12.126 -> <- 0B 0B 86 40 F61001 000000 06 00 - 11589
13:13:12.126 -> 06
13:13:12.126 -> BATTERY IS LOW? 0
13:13:13.819 -> ignore 0C 72 86 70 20DD41 000000 00 D8 35 - 13297
Code: Alles auswählen
void initPeerings (bool first) {
// create internal peerings - CCU2 needs this
if ( first == true ) {
#ifdef CREATE_INTERNAL_PEERINGS
DPRINTLN(F(".. creating peerings now"));
HMID devid;
sdev.getDeviceID(devid);
DPRINT(F(".. devid = ")); DHEXLN(devid);
for ( uint8_t i = 1; i <= 4; ++i ) {
Peer ipeer(devid, i);
sdev.derived_switchChannel(i).peer(ipeer);
}
for ( uint8_t i = 1; i <= 4; ++i ) {
Peer ipeer(devid, i);
sdev.remoteChannel(i + 4).peer(ipeer);
}
#endif
}
}
Schon mal schönen Dank im Voraus.
EDIT: Gerade sah ich, dass ich beim Addon einen Copy-Paste Fehler gemacht habe. Ich melde mich wieder, wenn ich das gefixt und erneut getestet habe: Der Copy-Paste Fehler ist nun lokal gefixt. Das war leider nicht die Ursache
Hier das WebUI des HB-UNI-SenAct-4-4-RC_DS Geräts meiner RaspberryMatic. Über das WebUI lassen sich die Relais schalten. Tastendrücke werden mit einem Zeitstempel registiert. Nur die Relais schalten nicht bei Tastendrücken
EDIT2: Noch ein Hinweis: Der Sketch verwendet zwei abgeleitete Klassen 'derived_SwitchChannel' und 'derived_AvrSPI'. Vielleicht funktioniert das in den Tiefen of AsksinPP durchgeführte Peering damit nicht. Da muss ich mal genauer reinschauen.
EDIT3: Nach der Korrektur eines Copy-Paste Fehlers zeigt das Drücken einer Taste erste Reaaktionen. Es ist zwar noch nicht die gewünschte Reaktion, aber das lässt sich finden und lösen.
Falsch war in der Peering-Funktion:
Code: Alles auswählen
for ( uint8_t i = 1; i <= 4; ++i ) {
Peer ipeer(devid, i);
sdev.derived_switchChannel(i).peer(ipeer);
Code: Alles auswählen
for ( uint8_t i = 1; i <= 4; ++i ) {
Peer ipeer(devid, i + 4);
sdev.derived_switchChannel(i).peer(ipeer);
Nach einer noch eingehenderen Validierungsphase werde ich den Sketch auf Github freigeben.
EDIT5: Die mittlere Stromaufnahme im Sleep-Mode beträgt ca. 680 uA.
EDIT6: Der funktionierende Sketch ist nun auf Github zu finden: HB-UNI-SenAct-4-4-RC_DS