LazyConfig / EEPROM usage
Moderator: Co-Administratoren
- FUEL4EP
- Beiträge: 586
- Registriert: 01.11.2017, 17:26
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 76 Mal
- Danksagung erhalten: 78 Mal
- Kontaktdaten:
LazyConfig / EEPROM usage
Frohes Neues Jahr!
LazyConfig funktioniert, wie hier im Forum schon diskutiert, nur bei einem angelerntem Sensor.
Beim Wechseln der Batterien oder beim Drücken des Resetknopfs verliert der Arduino Prozessor die Kenntnis über die Adresse der angelernten CCU/RaspberryMatic.
Wo wird die Adresse der angelernten CCU/RaspberryMatic gespeichert?
Ist es möglich, diese Adresse (und vielleicht andere für LazyConfig notwendige Information) im EEPROM des Arduino Prozessors abzuspeichern und nach einem Reset wieder zurückzulesen?
LazyConfig funktioniert, wie hier im Forum schon diskutiert, nur bei einem angelerntem Sensor.
Beim Wechseln der Batterien oder beim Drücken des Resetknopfs verliert der Arduino Prozessor die Kenntnis über die Adresse der angelernten CCU/RaspberryMatic.
Wo wird die Adresse der angelernten CCU/RaspberryMatic gespeichert?
Ist es möglich, diese Adresse (und vielleicht andere für LazyConfig notwendige Information) im EEPROM des Arduino Prozessors abzuspeichern und nach einem Reset wieder zurückzulesen?
Zuletzt geändert von FUEL4EP am 03.01.2021, 18:48, insgesamt 1-mal geändert.
Grüße
Ewald
Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs
Ewald
Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs
-
- Beiträge: 12108
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 848 Mal
- Danksagung erhalten: 2148 Mal
- Kontaktdaten:
Re: LazyConfig
Im EEPROM
Erstes ist seltsam... dann ist irgendwas mit deinem AVR nicht in Ordnung oder mit dem Sketch.
Zweites ist so gewollt ("Werksreset") - aber auch nur beim "ganz lange gedrückt halten"
- FUEL4EP
- Beiträge: 586
- Registriert: 01.11.2017, 17:26
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 76 Mal
- Danksagung erhalten: 78 Mal
- Kontaktdaten:
Re: LazyConfig
Hi Jérôme,
danke für Deine Antwort.
In welcher EEPROM Adresse wird die CCU Adresse gespeichert?
Welcher Prozess schreibt die Information ins EEPROM?
Dann hab ich einen Anhaltspunkt, wo ich suchen muss.
Vielen Dank im Voraus!
danke für Deine Antwort.
In welcher EEPROM Adresse wird die CCU Adresse gespeichert?
Welcher Prozess schreibt die Information ins EEPROM?
Dann hab ich einen Anhaltspunkt, wo ich suchen muss.
Vielen Dank im Voraus!
Grüße
Ewald
Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs
Ewald
Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs
-
- Beiträge: 12108
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 848 Mal
- Danksagung erhalten: 2148 Mal
- Kontaktdaten:
Re: LazyConfig
Das weiß ich nicht. Damit habe ich mich nie detailliert befasst, da das alles im Hintergrund beim Pairing sauber abläuft und bei über 50 Geräten noch nie Probleme machte
Was genau passiert denn bei deinem Sketch?
Du kannst ja mal die Ausgaben der Startsequenz im seriellen Monitor zeigen
- FUEL4EP
- Beiträge: 586
- Registriert: 01.11.2017, 17:26
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 76 Mal
- Danksagung erhalten: 78 Mal
- Kontaktdaten:
Re: LazyConfig
Hi Jérôme,
danke. Da meine betroffenen Sensoren zur Zeit alle in einem Langzeittest laufen, den ich nicht unterbrechen will, hier eine allgemeine Rückfrage:
Gibt in der Startsequenz im seriellen Monitor der Bereich hinter "Address Space" den von AsksinPP belegten EEPROM Bereich an?
Hier ein willkürlich aus dem Forum herauskopierte Startsequenz als Beispiel:
Ich benutze für die Speicherung von Sensorparametern auch das EEPROM des Arduino.
Woher bekomme ich im C Code den noch freien EEPROM Adressbereich?
Wie kann ich EEPROM-Speicher allokieren (Gibt es eine Art 'malloc' für EEPROM Speicher)?
danke. Da meine betroffenen Sensoren zur Zeit alle in einem Langzeittest laufen, den ich nicht unterbrechen will, hier eine allgemeine Rückfrage:
Gibt in der Startsequenz im seriellen Monitor der Bereich hinter "Address Space" den von AsksinPP belegten EEPROM Bereich an?
Hier ein willkürlich aus dem Forum herauskopierte Startsequenz als Beispiel:
Code: Alles auswählen
12:21:47.121 -> AskSin++ V4.1.7 (Dec 25 2020 10:19:44)
12:21:47.121 -> Address Space: 32 - 940
Woher bekomme ich im C Code den noch freien EEPROM Adressbereich?
Wie kann ich EEPROM-Speicher allokieren (Gibt es eine Art 'malloc' für EEPROM Speicher)?
Grüße
Ewald
Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs
Ewald
Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs
-
- Beiträge: 12108
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 848 Mal
- Danksagung erhalten: 2148 Mal
- Kontaktdaten:
Re: LazyConfig
Ab Byte 32 (0x20) liegen die Peerings und Listenparameter.
und - 940 liegt noch im Rahmen (von max 1024 beim 328P)
Da im EEPROM auch eine "magic" (erste 4 Bytes) und Checksumme abgelegt und auch beim Start geprüft werden, darfst du im EEPROM nicht einfach irgendwo was hinschreiben.
Du musst dafür die Methoden aus der Storage.h verwenden.
Ansonsten hast du nämlich genau dein Problem - der Speicherbereich im EEPROM wird bei jedem Neustart neu initialisiert und alles (CCU Pairing, Peerings, ListX) ist weg.
Code: Alles auswählen
uint8_t valueToSave = 0x00;
uint8_t cfgByte = 0x02; //Byte 0 und 1 sind für CONFIG_FREQ1 und CONFIG_FREQ2
StorageConfig sc = device().getConfigArea();
sc.setByte(cfgByte, valueToSave);
sc.validate();
Code: Alles auswählen
uint8_t value = sc.getByte(cfgByte)
Ansonsten muss pa-pa mal intervenieren
- FUEL4EP
- Beiträge: 586
- Registriert: 01.11.2017, 17:26
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 76 Mal
- Danksagung erhalten: 78 Mal
- Kontaktdaten:
Re: LazyConfig
Hi Jérôme,
danke, das hilft schon mal sehr gut. Wir sind dem Täter auf der Spur: Er sitzt ca. 50 cm vor meinem Bildschirm
Gibt es ein Beispielsketch, wo ich die Methoden von Storage.h im Einsatz studieren kann?
Ich habe (fälschlicherweise) meine EEPROM-Parameter ab der Adresse 100 abgelegt, ohne die Methoden aus der Storage.h zu verwenden. Danke für den Tipp. Er wird nun umgesetzt.
danke, das hilft schon mal sehr gut. Wir sind dem Täter auf der Spur: Er sitzt ca. 50 cm vor meinem Bildschirm
Gibt es ein Beispielsketch, wo ich die Methoden von Storage.h im Einsatz studieren kann?
Ich habe (fälschlicherweise) meine EEPROM-Parameter ab der Adresse 100 abgelegt, ohne die Methoden aus der Storage.h zu verwenden. Danke für den Tipp. Er wird nun umgesetzt.
Grüße
Ewald
Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs
Ewald
Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs
-
- Beiträge: 12108
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 848 Mal
- Danksagung erhalten: 2148 Mal
- Kontaktdaten:
Re: LazyConfig
Im DUMMY-BEACON-V2 habe ich das verwendet:
https://github.com/jp112sdl/HB-UNI-Sen- ... #L408-L452
Dort speichere ich den "Enabled"-Status eines jeden Kanals (1 Byte für 8 Kanäle).
- FUEL4EP
- Beiträge: 586
- Registriert: 01.11.2017, 17:26
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 76 Mal
- Danksagung erhalten: 78 Mal
- Kontaktdaten:
Re: LazyConfig
Perfekt!
Vielen herzlichen Dank!
Vielen herzlichen Dank!
Grüße
Ewald
Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs
Ewald
Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs
-
- Beiträge: 705
- Registriert: 22.05.2018, 10:23
- Hat sich bedankt: 24 Mal
- Danksagung erhalten: 120 Mal
Re: LazyConfig
Im vom Jerome vorgeschlagenen ConfigArea sind aber nur für 45 Byte Platz.
Hier ist der Code für doe Berechnung der letzten genutzen EEPROM Adresse.
https://github.com/pa-pa/AskSinPP/blob/ ... vice.h#L66
Im Prinzip die Adresse des letzten Channels + seiner Größe. Dahinter kannst Du den EEPROM nutzen - wie Du willst.
Vielleicht sollten wir hier mal ne Methode machen, die das ausrechnet und einfacher zu nutzen ist.
Hier ist der Code für doe Berechnung der letzten genutzen EEPROM Adresse.
https://github.com/pa-pa/AskSinPP/blob/ ... vice.h#L66
Im Prinzip die Adresse des letzten Channels + seiner Größe. Dahinter kannst Du den EEPROM nutzen - wie Du willst.
Vielleicht sollten wir hier mal ne Methode machen, die das ausrechnet und einfacher zu nutzen ist.
Anfragen zur AskSin++ werden nur im Forum beantwortet