Patch: Verbesserung Onewire HMS Emulation

Begonnen von kaihs, 29 Juni 2014, 19:40:54

Vorheriges Thema - Nächstes Thema

kaihs

Hallo,

aktuell lässt sich der Status der OneWire HMS Emulation nur per OHo Kommando toggeln und nicht explizit ein-/ausschalten. Der Status ist auch nicht persistent und nach einem Neustart des Devices wieder auf dem Initialwert (OFF).

Um die HMS Emulation immer eingeschaltet zu haben muss also irgendwie von fhem der Status auf Verdacht getoggelt werden um dann abhängig von der Antwort erneut zu toggeln und ggf. auch das Intervall neu zu setzen.

Der angehängte Patch erweitert das OHo Kommando um die optionalen Parameter 0,1,? um die Emulation auszuschalten, einzuschalten und den Status zu erfragen.
Außerdem wird der Status und das Interval im EEPROM gespeichert.

Daher muss die Emulation nur einmalig aktiviert werden und funktioniert dann selbstständig auch nach jedem Neustart ohne das eine Initialisierung von fhem kommen muss.

Den zusätzlichen ROM-Bedarf habe ich durch Optimierungen an anderer Stelle kompensieren können (int Variablen auf uint8_t umgestellt, der Wertebereich von int wird nicht benötigt).

Könnte dieser Patch in die culfw aufgenommen werden?

In dem onewire.c besteht übrigens noch erhebliches Optimierungspotential bzgl. RAM/ROM-Verbrauch. Allein die crc-Tabelle nur im ROM zu haben würde 256 Bytes RAM sparen.
Bei Interesse könnte ich diese Optimierungen vornehmen.

Kai
Banana Pi, Add-On Board mit 1.8" TFT LCD und IR-Sender, CULFW V1.61, div. Homematic Komponenten, Pollin Funksteckdosen, Selbstbau CUL433 MHz, Jeelink Clone, EC3000
Selbstbau CUL868MHz für Wireless M-Bus, SIGNALduino mit Logilink Temp.-sensoren und Auriol Wetterstation