Firmware zu CUL, CUNX und Co. mit Timestamp Option ASKSIN tsculfw V0.43

Begonnen von noansi, 09 Juni 2014, 19:16:01

Vorheriges Thema - Nächstes Thema

noansi

Hallo yersinia,

ZitatHast du eine Idee, woran das liegen könnte?
Ja.
2024.04.17 08:33:03 1: TSCUL_Parse: nanoCUL_868_2_Net Restart: C_ReadyCSM868sagt, dass Dein nano jedes mal einen Reset bekommt. Und das triggert wieder ein reopen, was ich auch nicht wieder raus nehmen will, damit seriell angebundene CULs neu initalisiert werden, wenn sie einen Reset durchlaufen.

Das passiert vermutlich beim Schließen und anschließendem Öffnen der nano Schnittstelle.
Beim nano ist die DTR Leitung via Kondensator mit dem Reset Pin des Atmel verbunden. Beim Öffnen wird da wohl ein Puls drauf gegeben. Gleiches dürfte auch für miniCUL und megaCUL gelten.
Mit
stty -F /dev/ttyUSB0 -hupclsoll man das abstellen können. /dev/ttyUSB0 wäre durch Deine Schnittstelle zu ersetzen.
Kann man wohl auch via udev rules automatisieren. Schau mal z.B. hier zum Thema https://raspberrypi.stackexchange.com/questions/9695/disable-dtr-on-ttyusb0


ZitatWenn ich raten müsste, hängt es mit den _noAnsw zusammen
richtig geraten. Register reads scheitern da.
Die Ausgabe der TSCUL logHist habe ich in CUL_HM eingebaut, damit man sehen kann, was kurz zuvor los war.

Kann daran liegen, dass es conditional burst devices sind oder einfach daran, dass zu viel "geplappert" wurde. Müsstest Du für eines der devices mal mit verbose 4 loggen nebst list vom device, wenn Registerwerte fehlen..

Gruß, Ansgar.

yersinia

Hallo noansi,

Danke für deine schnelle Antwort. :)

Zitat von: noansi am 03 Mai 2024, 23:17:56Beim nano ist die DTR Leitung via Kondensator mit dem Reset Pin des Atmel verbunden. Beim Öffnen wird da wohl ein Puls drauf gegeben. Gleiches dürfte auch für miniCUL und megaCUL gelten.
Mit
stty -F /dev/ttyUSB0 -hupclsoll man das abstellen können. /dev/ttyUSB0 wäre durch Deine Schnittstelle zu ersetzen.
Kann man wohl auch via udev rules automatisieren. Schau mal z.B. hier zum Thema https://raspberrypi.stackexchange.com/questions/9695/disable-dtr-on-ttyusb0
Danke für den Hinweis, das teste ich mal. Für ser2net könnte schon -RTSCTS und LOCAL reichen. Ich frage mich, ob ich ggf noch DTRLO und RTSLO setzen muss.
ZitatControls are: DTRHI, DTRLO Turns on and off the DTR line. RTSHI, RTSLO Turns on and off the RTS line
(https://manpages.debian.org/experimental/ser2net/ser2net.8.en.htm)

Zitat von: noansi am 03 Mai 2024, 23:17:56Kann daran liegen, dass es conditional burst devices sind oder einfach daran, dass zu viel "geplappert" wurde. Müsstest Du für eines der devices mal mit verbose 4 loggen nebst list vom device, wenn Registerwerte fehlen..
Ok, kann beides möglich sein: zu viel geplappert weil die neuen tempListen an alle RT und TCs gehen; aber auch könnten die TCs conditional burst devices sein. Bei der nächsten Umstellung (Mitte Herbst ;)) werde ich es beobachten. :)
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

noansi

Hallo yersinia,

ZitatDanke für den Hinweis, das teste ich mal.
Gib bitte feedback dazu, ob es klappt.

Ich kann nur sagen, dass ein ergänztes
, RUN+="/bin/stty -F /dev/%k -hupcl"in der betreffenden Zeile in meiner /etc/udev/rules.d/99-usb-serial.rules die Einstellung der Schnittstelle auch verändert. Abfrage mit stty liefert dann -hupcl.

ZitatFür ser2net könnte schon -RTSCTS und LOCAL reichen. Ich frage mich, ob ich ggf noch DTRLO und RTSLO setzen muss.
Scheint mir nicht das gleiche zu sein.

Gruß, Ansgar.

yersinia

Werde ich beobachten und mich dann hier wieder melden. Für den nano am pi habe ich es umgesetzt, für den via ser2net an OpenWRT angebundenen muss ich schauen, da es nicht funktioniert hat (und stty ist dort auch nicht vorhanden; muss mich erst einmal belesen, wie der Treiber kmod-usb-serial-ftdi das dort eigtl umsetzt).

Eine udev rule benötige ich nicht, da es zuverlässig über serial/by-id/ funktioniert; der OpenWRT hat nur einen USB-port ;)
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

noansi

#1429
Hallo Testwillige,

hier eine neue Version 0.42 der Timestamp Firmware und der dazu benötigten FHEM Module.

Die Version hat einige Verbesserungen erhalten, Auszug aus der Changed:
Version VTS 0.42
- Digital in/out double reporting of state with set corrected
- DMX serial IO interrupt routines done in assembler for ATMEGA
- Analog in reference feedback modified for Vbg for ATMEGA328P to same bitmask as 1284P
- more robust version change write in eeprom_factory_reset to ensure complete EEPROM reset even on unplug or reset during eeprom_factory_reset
- enhancements in CCA handling
- enhancements in cc1101 state handling
- more generalized error feedback
- ASKSIN readout of more than one packet possibly received in RX-FIFO and receive timestamp taken before RX-FIFO readout

Version VTS 0.41
- CC1101_FSCTRL1 default settings adapted to frequency bands
- marker handling configuration at compile time enhanced
- reduced interrupt disabled times
- CUNX, resolved possible Ethernet connect problems, if connected to a host via USB
- CUNX, speed enhancement in Ethernet connection
- SPI transfer little optimized
- HOERMANN send added
- SOMFY send corrected and optimized
- changed USB currents for CUL and CUNX
- ASKSIN for B112/A112 to multible devices better keep of send order for command after
- fswrapper, qfs, df adapted to reversed buffer access, to be tested
- RFR_SHADOW removed
- serial IO and stacking serial IO interrupt routines done in assembler for ATMEGA
- Analog in function 'a' added, allows read of processor temp voltage for CULV3 or allows analog in on one analog input for ATMEGA (done for CUNO2 and nanoCUL/miniCUL)
- Digital in/out function 'd' added, allows digital input or output on upto 8 digital I/O pins for ATMEGA (done for CUNO2 and nanoCUL/miniCUL)
- added Intertechno V1 send of 'D'. 'D' is sent, if not '0', '1' or 'F' is character

Version VTS 0.40
- HOERMANN receive corrected

Beschreibung 'a' Firmware Kommando für Analoge Eingabe auf einem ADC Pin oder CPU Temperature Voltage:
aiTTT: TTT dezimal. Setzt das Abfrage und Reporting Intervall in Sekunden, 0 schaltet es ab.
        Ist es eingeschaltet, dann kommt im Intervall eine aHHHH Message mit dem Analogwert in 16 Bit HEX

acC:  C Buchstabe. Auswahl der Spannungquelle. Wird kein Buchstabe angegeben, dann wird die aktuelle Einstellung ausgegeben als acX oder aXX hex Code.
        acp wählt den analogen Eingabe Pin, vgl. board.h
        acg wählt Analog GMD
        acr wählt die Vbg Referenzspannung
        act wählt den Temperatursensor (so in der CPU vorhanden)

arC:  C Buchstabe. Auswahl des Referenzwertes. Wird kein Buchstabe angegeben, dann wird die aktuelle Einstellung ausgegeben als acX oder aXX hex Code.
        arA wählt AREF
        ar3 wählt VACC
        ar2 wählt 2.56V interne Referenz
        ar1 wählt Vbg

TSCUL zeigt den Spannungswert im Reading VoltAnIn an. Dazu gibt es noch die Attribute AInVref_AVCC_Volt, AInVref_2_56_Volt und AInVref_Vbg_Volt mit denen die Referenzspannungswerte für die Auswertung kalibriert werden können.
Der CPU Temperaturwert wird im Reading Temperature angezeigt. Jedoch muss dieser für jeden CUL indivudell kalibriert werden. Dazu gibt es das Attribut AInTempCalib zur Einstellung einer linearen Kalibrierung.

Bisher nur kompiliert für CUL V3 (nur interne Temperatur), CUNO2, nanoCUL und miniCUL.
Da direkt an die CPU angeschlossen wird, ist natürlich entsprechende Vorsicht walten zu lassen, um den Eingang nicht mit unzulässigen Spannungen zu zerstören.

Beschreibung 'd' Firmware Kommando für Digitale Ein- und Ausgabe auf bis zu 8 digital I/O Pins.
diTTT: TTT dezimal. Setzt das Abfrage und Reporting Intervall für die Pins in Sekunden, 0 schaltet es ab.
        Ist es eingeschaltet, dann kommt im Intervall eine dHH Message mit den Pin Stati in 8 Bit HEX

doHH:  HH hex. Setzt die in HH mit binär 1 gesetzten Pins auf Ausgang, mit binär 0 gweählten Pins auf Eingang.
        Ist ein Pin auf Eingang geschaltet, so werden keine Pullup oder Pulldown Widerstände aktivert. Der Eingang ist also unbeschaltet floatened und liefert demensprechend wechselnde Statuswerte.
        Wird kein Hex Wert angegeben, wird die aktuelle Auswahl als doXX als 6 Bit HEX ausgegeben

dr:    Liest den aktuellen Pin Status als dHH, wie beim Intervall.
drII:  Liest den aktuellen Pin Status des mit II (hex, 0-7) gewählten Pins als dII0 oder dII1. Eine ungültige Pinnummer II liefert ein ?.

dsVV:  setzt alle gewählten Ausgänge auf den Wert im übergebenen 8 Bit HEX Wert VV
dsOOvv: setzt den mit OO (hex, 0-7) gewählten Pin auf 1 wenn vv ungleich 0 oder auf 0, wenn vv gleich 0.
        Ist der Pin nicht mit do auf Ausgabe gewählt, dann passiert nichts.  Eine ungültige Pinnummer OO liefert ein ?.
        Es wird abschließend der aktuelle Pinstatus als dHH ausgegeben, wie bei Intervall.

TSCUL zeigt den Pin Status als Reading DigIn 0xXX hex an.

Bisher nur kompiliert für CUNO2, nanoCUL und miniCUL.
Da direkt an die CPU angeschlossen wird, ist natürlich entsprechende Vorsicht walten zu lassen, um den Eingang nicht mit unzulässigen Spannungen zu zerstören.
Beim do Kommando muss natürlich darauf geachtet werden, den Ausgang nicht zu überlasten, z.B. durch schalten auf eine Spannungsquelle...

CUNO2 Pins auf Jp1:
Pin 1 (CPU PC2)  Digital Ein- oder Ausgang 0
Pin 2 (CPU PA0)  Analogeingang
Pin 3 VDD
Pin 4 GND
Pin 5 (CPU PC3)  Digital Ein- oder Ausgang 1
Pin 6 +5V von USB

nanoCUL:
Board pin A4 (CPU PC4)  Digital Ein- oder Ausgang 0
Board pin A5 (CPU PC5)  Digital Ein- oder Ausgang 1
Board pin A7 (CPU ASC7) Analogeingang


Die Version 0.39 bietet einige Timingänderungen für HM. Außerdem ist das Commandref überarbeit. Bei TSCUL werden sets und gets nun abhängig von rfmode und unterstützten Firmwarebefehlen angeboten.

Die Version 0.38 verhindert repeats für TC und TH Messages, was für virtuelle TC und TH Sensoren sinnvoll ist.
Auszug aus de Changed:
- ASKSIN repeats for TC and TH messages set to 0
- ASKSIN Ag command added, allow setting ASKSIN non FUP AGCCTRL2 value in EEPROM
Außerdem Verbesserungen in Modulen, insbesondere für virtuelle TCs und TH Sensoren.
Beim Reboot nach dem Flashen werden alle EEPROM Einstellungen auf Default gesetzt. Also alle am CUL vorgenommenen Einstellungen notieren, um sie wieder einstellen zu können.

In Version 0.37 ist der Readout des Tranceiver RX Fifos insbesondere für ASKSIN verändert. Beim Reboot nach dem Flashen werden alle EEPROM Einstellungen auf Default gesetzt. Also alle am CUL vorgenommenen Einstellungen notieren, um sie wieder einstellen zu können.
RF_Router und fast_rf sind verändert und nicht kompatibel zu vorherigen Versionen.

Version 0.36 behebt ein Überlaufproblem des RX-FIFOs des Transceivers, der zum Empfangsausfall führen konnte (fiel nur beim reinen Empfangsbetrieb ohne regelmäßiges Senden auf). Danke Stefan für den Hinweis.

Auszug aus der Changed:
- little correction in rf_native, if slowrf monitoring is active
- lacrosse emu reworked
- SlowRf reception adapted for better ESA reception with still well E and HMS reception
- generic Manchester raw send added with Gm command
- ESA send added with 'S' command
- HMS send added with 'Q' command
- IT reception corrected
- RfRouter with repeat in FastRF packet, better send timing and reduced receive timeout
- for pure USB CULs blinking while waiting on watchdog reboot and during boot/bootloader reboot with different frequencies
- message finalization with \n on PIM receive buffer full
- ASKSIN, fastRF, RF-Router, moritz, rwe, RX-FIFO Overflow detection improved

Noch als Hinweis, für HMS und ESA scheint sens 12 eine ungünstige Einstellung für den Empfang  dieser Protokolle zu sein.

Diese Version bietet wakup support und keep awake Support. Für CULs mit wenig Speicher kann dies mit dem Attribut "hmForceLzyCfg" aktiviert werden, siehe auch der Hinweis zum EEPROM Verschleiß weiter unten.

Das RF-Router Ping Timing ist geändert, damit also auch nicht kompatibel mit Standard culffw oder a-culfw und auch nicht zur Version 0.32.
Ergänzt ist SlowRf Empfang von Pearl NC7427 Temperatur/Luftfeuchte Sensoren. Entsprechend Kanalwahlschalter können 3 Stück empfangen werden. Zum Anlernen mittels autocreate muss der TEST Taster am Sensor gedrückt werden.

Das EEPROM Layout ist geändert und daher werden nach dem Flashen alle Einstellungen auf default zurück gestellt. Also vor dem Flashen individuelle Einstellungen, z.B. Frequenzoffsets, notieren und nacher neu einstellen.

Auszug aus der Changed:
- FULL_PA_RAMPING bugs corrected
- CCA CS thresholds setable for ASKSIN, MORITZ, HAS_RWE, RFNATIVE and MBUS with XTxy, x=CARRIER_SENSE_REL_THR, y=CARRIER_SENSE_ABS_THR as in AGCCTRL1
- SlowRf receive timing limits corrected
- SlowRf lower filter switched off by define in rf_receive_timing.h
- RFR timing/timeout shortened, FastRF CCA disabled
- auto Ci interrupt counter messages
- XP command extended to switch on auto Ci messages, AP removed as all PLL messages switchable by XP
- improvement and corrections for CUNX RS485 PIG support
- CUNX: PIG RTS controllable by USB Host for serial foward and RS485 serial forward
- CUNX: DMX interupts changed to HI priority and CC1101 interrupts to MED priority
- CUNX: USB interrupts to LO priority
- GPIOR1 used for USB USB_DeviceState
- GPIOR1 used for SERIAL STACKING stacking_ST_state


Ein Peakfilter für SlowRF Empfang ist ergänzt und mit "peakfilter" einstellbar.
In dem Zusammenhang ist auch das RF-Router Ping Timing geändert, damit also auch nicht kompatibel mit Standard culffw oder a-culfw.
Außerdem kann das Senden von RF-Router Daten nach deren Empfang einstellbar verzögert werden (RfRdelay).

CCAMode wirkt nun auch auf IT-Senden und SOMY-Senden, sowie auf das Senden des RF-Router Pings. Mit fRfCCAMode kann auch das CCA Verhalten für RF-Router Senden und FastRF geändert werden.

Auszug aus der Changed:
- IT and SOMYFY use SlowRF EEPROM CCA setting now for sending
- changes in SlowRF reception for reset and sync start. IT V1 reception tested succsessfully.
- SlowRF filter and match adaption
- SlowRF spike filter improved, max. peak lenght settable with Xpxx, xx hex time in 8us units
- IR receive/transmit pause during send of SlowRF changed to not globally switching off all interrupts
- periodic RF-Router ping RSSI display as "Cuxx\r\n" with xx = RSSI Hex
- RF-Router ping timing changed for better distinguish from other protocols
- RF-Router pre silence before send settable with uRxx, xx hex time in 4ms units
- Xrrt commands bits:
  rr:
  report known protocol data                                                      Bit 0
  report repeated data                                                            Bit 1
  report received bits                                                            Bit 2
  report 'r' (rising) or 'f' (falling) edge, '.' (collect) or '?' (sync) timeout  Bit 3
  report edges, bit times and timeouts                                            Bit 4
  report S300 data with valid checksum only                                      Bit 5
  report FHT                                                                      Bit 6
  report 'l' RSSI decimal data continuosly                                        Bit 7
  t:
  report recorded SlowRF timing                                                  Bit 0
- corrections in interrupt flag clearing
- correction in delay function
- fastRF bug corrected, untested
- EEPROM layout changed for the new parameters


TSCUNX kann mit entsprechendem RS485 Modul nun auch DMX.
Auch HM485 ist für TXCUNX angepasst.
In dem Zuge ist auch die DMX Funktionalität bei CUNO2 etwas erweitert.
IR läuft nun auch richtig mit TSCONO2.
Außerdem läuft RF-Router auf der tsculfw, allerdings mit einer Änderung. Das 'U' ist durch '~' ersetzt. 'U' kollidierte mit dem Uniroll Senden.

Kurzer Auszug aus der CHANGED:
- IO optimizations CUNX, especially to/from PIM and Ethernet
- CUNX DHCP non blocking operation
- IO optimizations
- HM485 support for CUNX (like CUNO2) with RS485 PIM.
  HM485 switch off with Hx for CUNX. With CUNX after Hx RS485 PIM again accessible via PIM USB or Ethernet Interface
- CUNX support for DMX and HM485 with RS485 PIM (to be tested), a Dwxxxxyy switches to DMX via CUNX Interface, a Hsxxxxxxxxxxxxxxxxxx switches to HM485 via CUNX Interface
- DMX switch off with Dx. With CUNX after Dx RS485 PIM is again accessible via PIM USB- or Ethernet Interface
  DMX flexible channel usage. Channels are sent out upto the highest channel set (0 sent as default for unset channels). With switching off with Dx the highest channel is reset.
  DMX changed in timing and resting behaviour. Rests on IDLE if less then 24 device, only, to keep 1204µs min. BREAK to BREAK (to be tested)
  DMX Dt command to set/view timing of MarkAfterBreak and BREAK
  DMX less disturbed while sending SlowRF
- W function gives feedback after writing EEPROM
- clock timer unburdened, may impact onewire and fht (to be tested)
- corrections for IRTX
- IR base timings changed to 12500Hz or 20000Hz
- RF-Router working, but 'U' changed to '~' (definable in board.h, but 'U' disables HAS_UNIROLL)

Es ist eine Prüfung auf Stacküberlauf eingebaut. Am Anfang des heap werden zwei Byte mit einem Bitmuster beschrieben. Wird das verändert, dann ist der Speicher wahrscheinlich korrumpiert, was durch einen Stacküberlauf ausgelöst sein sollte. Sofern der CUL dann noch kann sendet er ein "C_M" an TSCUL, was zu einem entsprechenden Log Eintrag führt.
Damit kann man vorsichtig die Speichergrenzen ausloten. Ein langer Testzeitraum ist aber erforderlich, um einigermaßen sicher zu sein, dass der worst case auch mal durchlaufen worden ist.
Außerdem ist ein Kommando mU (je nach Firmware) eingebaut, mit dem man den vom Stack ungenutzen heap in etwa auslesen kann (auch als get unusedstack in TSCUL verfügbar). Auch hier gilt, nur nach langer Laufzeit einigermaßen sinnvoll. Es macht sicher keinen Sinn auf Grund des Wertes den Speicher bis auf das letzte Byte auszuquetschen, denn weiterhin hängt die Stacknutzung vom gewählten Protokoll und Einstellungen ab.

In TSCULflash ist Flashen auch von NanoCULs und MiniCULs ergänzt. Vor dem Flashen wird ein "B00" also Reset für die TSCUL Firmware an den nano/Mini geschickt, 1 Sekunde gewartet und dann versucht mit avrdude zu flashen.
Also erst die Firmware in den FHEM/Firmware Ordner kopieren und dann in FHEM mit
TSCULflash <nanodevicename> TSnanoCULbzw.
TSCULflash <minidevicename> TSminiCULversuchen zu Flashen. Im Log sollte danach (dauert etwas) die avrdude Ausgabe zu finden sein.

Ebenfalls (nur über USB Anschluss) möglich ist das Flashen eines PIGATOR Moduls an einem CUNX
TSCULflash <pigatordevicename>|<cunxdevicename> TSPIGATOR
AESCommReq wird unterstützt. Die Nutzung ist unverändert zu Standard CUL, sprich, beim gewünschten Gerät/Kanal aesCommReq auf 1 setzen und ggf. noch aesKey passend zum verteilten Key setzen.
Es werden von tsculfw nur die Keys 0 (Default Key) bis 3 unterstützt.

Diese Erweiterung erfordert jedoch auch zusätzliche Empfangspuffer im knappen Speicher des CULs. Ein CUL V3 nutzt bis zu 6 Empfangspuffer. Auch der FlashSpeicherbdarf ist angestiegen, so dass einige Protokolle nicht mehr gleichzeitig in ein Kompilat passen. Das sollte aber weniger tragisch sein, da im ASKSIN Modus ohnehin nur HM empfangen werden kann.

Bei CUL V2 reicht der verfügbare Speicher leider hinten und vorne nicht aus, um diese Version nutzen zu können.

Im Anhang ist in TSCUL_fwcode_00_xx.zip und FHEM_Modules_00_xxx.zip wieder die Timestamp Firmware zu finden. Getestet habe ich TSCUNX, TSPIGATOR , TSCUL_V3, TSCUL_V3_RFR, TSCUNO2, TSCOC und TSSCC. (TSCUL_V3_RFR ist ohne HM Unterstützung, also nur SlowRF)

Die tsculfw Firmware kann für TSCUL_V3, TSCUL_V3_RFR (via USB), TSCUNO2, TSCOC, TSSCC, TSCUNX und TSPIGATOR (an CUNX) mit FHEM mit dem TSCULflash geflashed werden. Die anderen müssen mit dem jeweiligen Flash Programmer geflashed werden. Bei CUNO2 und SCC muss die Bootloadertaste gedrückt werden, bis der Flashvorgang anläuft.
So z.B. https://forum.fhem.de/index.php/topic,24436.msg631743.html#msg631743 kann es mit einem USB CUL Stick gehen, wenn man nicht TSCULflash verwendet.
TSCULflash ist erweitert auf COC, SCC, CCD, rpiaddon, CUNO2 und CUNO. Jedoch ist es nicht ganz so einfach zu handhaben, da zum einen teilweise die Taste zu drücken ist und bei Raspberry PI Modulen die Rechteproblematik für den Zugriff auf die IO-Pins überwunden werden muss. Tips dazu in der Command-Ref auch bei RPI_GPIO.
Bei einem Stapel aus SCC mit aufgesetztem COC, CCD oder (rpiaddon?) ist unbedingt beim SCC Flash darauf zu achten, die Taste am gewünschten Modul zu drücken. Sonst wird das oberste Nicht-SCC Modul mit der SCC Firmware geflashed.
Mit CUNO2 ist das flashen getestet (generell nur über USB!). Wichtig, aber auch hier, die Taste zu drücken.

Es gibt nicht den Luxus des Downloads beim TSCULflash, sondern die Firmware muss händisch in den FHEM/firmware Ordner kopiert werden. Der Typ ist dann z.B. TSCUL_V3.
Beispiel:
TSCULflash MeinCulV3Device TSCUL_V3
Wichtig für SCC Nutzer. TSSTACKED ist entfallen und wird nicht mehr unterstützt.
Statt dessen gibt es das neue Modul STACKABLETS (als Abwandlung von Rudolfs STACKABLE).
Dieses wird sozusagen zwischen die Stackteilnehmer eingebaut.

Beispiel für fhem.cfg:
#erstes SCC Modul als Basis
define SCC_WS868 TSCUL /dev/ttyAMA0@38400 0000
attr SCC_WS868 event-on-change-reading Ints_per_sec,IntCalcStat,MatchStat
attr SCC_WS868 rfmode SlowRF
attr SCC_WS868 room Receiver
attr SCC_WS868 sendpool CUL_HM868,SCC_WS868
attr SCC_WS868 verbose 1

#neues STACKABLETS virtuelles IO device
define STACK_1 STACKABLETS SCC_WS868
attr STACK_1 verbose 1

#zweites SCC Modul
define SCC_HM868 TSCUL FHEM:DEVIO:STACK_1:38400 1034
attr SCC_HM868 event-on-change-reading cond
attr SCC_HM868 hmId F11034

Ergänzender Hinweis zu USB CULs: Nach dem flashen von TSCUL kann es sein, dass das Betriebssystem TSCUL eine neue Schnittstelle zuweist und ggf. auch anderen USB devices. Auf Linux mit "dmesg" heraus zu lesen.
Auch beim Neustart des Systems kann sich die Reihenfolge ändern. Bei meinem Raspi sogar abhängig von der Startart Reboot oder Einschalten.
Für CULs mit nativer USB Schnittstelle (z.B. CUL V3.x oder CUN) kann die \Firmware\tsculfw-code-459-trunk_lufa_00_08\culfw\Devices\99-usb-serial.rules nach /etc/udev/rules.d/99-usb-serial.rules kopiert werden. Dann wird CUL stets der Schnittstelle /dev/CUL868_0 (oder /dev/CUL433_0 bei 433.9MHz Version) zugewiesen und er kann mit
define CUL_868 TSCUL /dev/CUL868_0@12000000 1234bzw.
define CUL_433 TSCUL /dev/CUL433_0@12000000 0000definiert werden und es gibt keine Probleme mit wechselnder Schnittstelle mehr.
Die Seriennummer kann beim Compilieren der Firmware in der board.h festgelegt werden, so dass damit dann auch /dev/CUL868_1 etc. für mehrere gleiche CULs möglich sind.

Oder für CUNX
define CUNX_868 TSCUL /dev/CUNX868_0@12000000 0000oder für PIGATOR an CUNX
define PIGATOR_433 TSCUL /dev/CUNXPIM_0@38400 0000die Seriennummer wird aus der Seriennummer des XMEGA Chips des CUNX gebildet. Unter Linux lsusb nutzen!

Das geht leider nicht bei nicht nativen USB CULs wie z.B. nanoCUL oder CUNO2. Hier muss eine 99-usb-serial.rules nach den Daten in der dmesg Ausgabe erstellt oder modifiziert werden, um den gleichen Effekt zu erzielen, sofern der USB-Seriell Interfacebaustein eine eindeutige Seriennummer liefert.
Ansonsten kann es noch mit der USB-Schnittstelle probiert werden, an der CUL eingesteckt ist ("lsusb" Ausgabe), was an meinem RasPi aber nicht funktioniert hat, da dieser abhängig von Warmstart oder Kaltstart andere USB-Portnummern vergibt.

Bei nicht nativen USB CULs wie z.B. nanoCUL, miniCUL oder CUNO2, beträgt die Baudrate 38400, dementsprechend muss die Definition beispielsweise so aussehen:
define CUL_868 TSCUL /dev/CUL868@38400 1234bzw.
define CUL_433 TSCUL /dev/CUL433@38400 0000
Und noch ein Beispiel für eine Definition eines Netzwerk CUNX:
define CUL_868 TSCUL 192.168.178.111:2323 0000oder für PIGATOR an CUNX
define PIGATOR_433 TSCUL 192.168.178.111:2324 0000beim PIGATOR sollten zuvor mit Anschluss an USB und öffnen der Schnittstelle mit gewünschten Kommunikationsparametern mit ps oder unter TSCUL mit set PIMstoreBaud die seriellen Kommunikationsparameter zum PIGATOR Modul gespeichert werden, falls sie vom default abweichen.

Oder Netzwerk CUNO2:
define CUNO2_868 TSCUL 192.168.178.110:2323 0000
Die aktuell eingestellte oder per DHCP erhaltene Netzwerkadresse kann mit Lc repektive in TSCUL mit get NetAdresses abgefragt werden. Mit Lp respektive in TSCUL mit get NetPHYlink kann der Linkzustand des Netzwerkanschlusses angezeigt werden.


In der Zip Datei sind ebenfalls die ergänzten Module zu finden, die zur Nutzung der Firmware erforderlich sind.

00_TSCUL.pm        -> statt der 00_CUL.pm, aus CUL devices werden damit TSCUL devices in der fhem.cfg (händisch anzupassen)
DevIoTS.pm            -> verbesserte Version von DevIo.pm für die TS Module
16_TSCUL_RFR.pm -> der 16_CUL_RFR.pm, aus CUL_RFR devices werden damit TSCUL_RFR devices in der fhem.cfg (händisch anzupassen)
16_STACKABLETS.pm -> statt der 16_STACKABLE.pm, aus STACKABLE werden damit STACKABLETS devices in der fhem.cfg (händisch anzupassen)
97_timerTS.pm          -> Austausch-Timerroutinen und fhemFork()

10_UNIRoll_TS.pm  -> statt der 10_UNIRoll.pm, mit TSCUL IO-devices zu verwenden, aus UNIRoll wird dann UNIRoll_TS  in der fhem.cfg (händisch anzupassen)
13_TSKS300.pm    -> statt der 13_KS300.pm, mit TSCUL IO-devices zu verwenden, aus TSKS300 wird dann TSKS300  in der fhem.cfg (händisch anzupassen). Obsolet, da 14_TSCUL_WS.pm nun KS300 unterstützt.
14_TSCUL_TX.pm    -> statt der 14_CUL_TX.pm, mit TSCUL IO-devices zu verwenden, aus CUL_TX wird dann TSCUL_TX  in der fhem.cfg (händisch anzupassen)
14_TSCUL_WS.pm  -> statt der 14_CUL_WS.pm, mit TSCUL IO-devices zu verwenden, aus CUL_WS wird dann TSCUL_WS  in der fhem.cfg (händisch anzupassen)
14_TSCUL_NC7427.pm  -> NC7427 Unterstützung
15_TSCUL_EM.pm  -> statt der 15_CUL_EM.pm, mit TSCUL IO-devices zu verwenden, aus CUL_EM wird dann TSCUL_EM  in der fhem.cfg (händisch anzupassen)
12_TSHMS.pm        -> statt der 12_HMS.pm zu verwenden
CalcUtil.pm              -> Hilfsrechenroutinen für Taupunkt und Windstärkeindex
ReadingUtil.pm          -> Hilfsroutinen für Readings

Da diese Module ergänzt werden (müssen!), überleben sie auch ein Update von FHEM.

98_fhemdebug.pm    -> fhemdebug zur zwingenden Nutzung mit 97_timerTS.pm.
98_apptime.pm          -> apptime zur zwingenden Nutzung mit 97_timerTS.pm.
98_apptm.pm            -> apptime zur zwingenden Nutzung mit 97_timerTS.pm, mit geringerem Speicherverbrauch bei weniger Details
10_IT.pm                  -> vermeidet unnötiges busy waiting beim Senden. Wird ohne Schutz von FHEM update überschrieben

Außerdem:

98_TSCULflash.pm    -> Zum Flash von TSCUL_V3, TSPIGATOR (an CUNX) mit Datei in FHEM/firmware

10_CUL_HM.pm        -> angepasste Version zur Nutzung mit TSCUL/tsculfw. Die Nutzung dieses Moduls ist optional. Für CUL_V3, nanoCUL, miniCUL im Multio-HM-IO Betrieb jedoch empfohlen, da sie den EEPROM Verschleiss über das Attribut "rssiSwitchHyst" verringert. Nur diese Version bietet derzeit vollständige TSCUL/tsculfw Unterstützung. Zur Einsparung redundanter Events werden teilweise Readings (actuator, desired-temp, measured-temp) nicht mehr zusätzlich im HM-device, sondern nur noch in den jeweiligen Channels aktualisiert.
HMConfig.pm            -> mit der enthaltenen 10_CUL_HM.pm zwingend zu verwenden. Einstelllimits für HM-CC-RT-DN Regler P und I Anteil erweitert. Damit kann man mit R-regAdaptive offDeter deutlich mehr an den Regelparametern spielen.
98_HMinfo.pm          -> mit der enthaltenen 10_CUL_HM.pm zwingend zu verwenden. Spaltenbreiten in Tabelle von protoEvents variabel zu verbesserten Übersicht in der Darstellung.
98_HMtemplate.pm  -> mit der enthaltenen 10_CUL_HM.pm zwingend zu verwenden.
Die 4 Dateien entsprechen einem Stand von Anfang 09/2020. Derzeit sollten diese verwendet werden.

10_CULG.pm              -> optional, enthalten, da die Firmware es unterstützt

98_autocreate.pm      -> autocreate mit TSCUL Unterstützung

98_Cumulate              -> Kumulieren von Zählwerten, wie Strom, Regenmenge etc.
98_SAverage.pm        -> Mittelwertbildung von z.B. Temperaturen. Stunde, Tag, Monat und Jahr, sowie ein gleitender Mittelwert der letzten Stunde sind damit möglich.
98_IntervalTimer.pm  -> optional, Intervalltimer um FEHM-Timerbasiert Kommandos in möglichst konstanten Intervallen absetzen zu können.

Wie immer, vor Austausch und Veränderungen der Module und fhem.cfg, erst Backup dann Ändern!

Mit folgendem Eintrag (oder Ergänzung des attributs) in der fhem.cfg kann man das fhem Update am ungewollten Austausch der angepassten Module hindern:
attr global exclude_from_update 00_TSCUL.pm 16_STACKABLETS.pm DevIoTS.pm 10_UNIRoll_TS.pm 13_TSKS300.pm 14_TSCUL_TX.pm 14_TSCUL_WS.pm 15_TSCUL_EM.pm CalcUtil.pm 14_TSCUL_NC7427.pm ReadingUtil.pm 97_timerTS.pm 98_TSCULflash.pm 98_apptime.pm 98_apptm.pm 10_IT.pm 10_CULG.pm 10_CUL_HM.pm HMConfig.pm 98_HMinfo.pm 98_HMtemplate.pm ReadingUtil.pm 98_autocreate.pm 98_Cumulate.pm 98_SAverage.pm 98_fhemdebug.pm
Hier https://forum.fhem.de/index.php/topic,24436.msg501057.html#msg501057 noch Rudolfs zwingend auszuführender Tip zur Aktualisierung des Commandref  nach dem Kopieren/Austausch der Dateien so dass dann auch Doku zur Nutzung zu lesen ist.
fhem> { `perl contrib/commandref_join.pl` }
Noch ein Hinweis: TSCUL fragt auch die Firmwareversion der tsculfw auf 0.40 ab. Eine ältere Version wird also nicht unterstützt!

Frequenzoffset: Für HM ist ein Frequenzoffset von -20.6kHz im EEPROM als default in der tsculfw hinterlegt (das ist ein individuelles Optimum für meinen COC). Dieser Frequenzoffset kann mit set hmFreqOffs umgestellt werden. 0 ist default in der Standard-culfw.
Wenn also keine Antwort von angesprochenen HM devices kommt, dann hmFreqOffs von 0 ausgehend verstellen. CUNX z.B. geht eher in Richtung + mit dem Offset.
Wer das Frequenzspektrum sichtbar machen kann, kann sich die optimale Mitte aller devices ermitteln und mit dem Offset sein CUL dazu passend einstellen.

Noch ein Tip zur Haltbarkeit der CULs mit wenig SRAM (CUL V3, nanoCUL, miniCUL ...). Jedesmal, wenn einem HM-Device das IODev durch Roaming neu zugeordnet wird, führt das zu EEPROM Schreibvorgängen in den beteiligten CULs. Die Lebensdauer des EEPROMs ist begrenzt (100000 Schreibzyklen laut Datenblatt). Daher rate ich zur Nutzung des VorzugsIOs beim Device Attribut IOgrp. Also nicht einfach stumpf
attr HMdeviceName IOgrp VCCUsetzen, sondern
attr HMdeviceName IOgrp VCCU:CUL_mit_gutem_Empfang_fuer_Devicesofern die Roaming Funktionalität entsprechend RSSI für das jeweilige device nicht zwingend benötigt wird. Ein Fallback auf einen anderen CUL bleibt dennoch möglich.
Mit dem Attribut "rssiSwitchHyst", das in der beigefügten 10_CUL_HM.pm verfügbar ist, kann bei den HM-devices die Umschalthysterese für das Roaming von 10 bis auf 2 bei Bedarf für mobile devices verringert werden.
Das Attribut "hmForceLzyCfg" ist entfernt, damit wakeup und keep awake support bei solchen CULs immer aktiviert. Das erhöht den EEPROM Verschleiß beim Lesen oder Verändern von Registerwerten bei wakup und lazy config devices. Reserve CUL zur Hand haben kann nicht schaden, wenn das EEPROM schwächelt.

Ergänzt ist auch noch ein set TX3Send.
Damit lassen sich TX3 Sensordatentelegramme auf 433er CULs versenden.
Beispiel:
define NF_TempOut notify Sen_Aussen:temperature.*  {fhem("set TSCUL_WS433 TX3Send T:".(ReadingsVal("Sen_Aussen","temperature","n.a."))." SID:23 U")}

define NF_HumOut notify Sen_Aussen:humidity.* {fhem("set TSCUL_WS433 TX3Send H:".(ReadingsVal("Sen_Aussen","humidity","n.a."))." SID:23 U")}

Ergänzt ist auch noch ein set KSSend.
Damit lassen sich WS Sensordatentelegramme versenden.
Beispiel:
define NF_TempOut notify Sen_Aussen:temperature.*  {fhem("set TSCUL_WS433 KSSend T:".(ReadingsVal("Sen_Aussen","temperature","n.a."))." H:".(ReadingsVal("Sen_Aussen","humidity","n.a."))." Code:2")}

Zum regelmäßigen Senden von Sensordaten kann der IntervalTimer genutzt werden.
Beispiel:
define AussenSend_WS11 IntervalTimer CUNO2_WS868 176.5
attr AussenSend_WS11 offCmd {fhem("set @ KSSend T: ".ReadingsVal("C_Aussen","temperature",0.0)." H: ".ReadingsVal("C_Aussen","humidity",0.0)." Code:21")}
attr AussenSend_WS11 onCmd {fhem("set @ KSSend T: ".ReadingsVal("C_Aussen","temperature",0.0)." H: ".ReadingsVal("C_Aussen","humidity",0.0)." Code:21")}

Hier geht es zur vorherigen Version https://forum.fhem.de/index.php?msg=1297324.

Gruß, Ansgar.

Edit: Anhang gelöscht. Bitte V0.43 oder höher nutzen.

yersinia

#1430
Hi noansi,

Danke nochmal für deine Mühen. Flashen & Co lief auf meinen zwei Nanos Problemlos.
2024.09.26 08:40:37 1: nanoCUL_868_1 is VERSION_TS, VTS 0.42 CSM868, nanoCUL_V1.x_0014
2024.09.26 08:40:48 1: nanoCUL_868_2_Net is VERSION_TS, VTS 0.42 CSM868, nanoCUL_V1.x_0014

Neuerdings bekomm' ich neue Meldungen wie zB für die zwei HM-SEC-SCO:
2024.09.26 09:22:29 3: CUL_HM set AZ_FensterLinks_HM_4B3FE7 getConfig noArg
2024.09.26 09:25:38 2: TSCUL_ReceiveDelayed: nanoCUL_868_1 No data received within 900s; CC1101: C 00=07 01=2E 02=01 03=4F 04=E9 05=CA 06=1A 07=47 08=45 09=00 0A=00 0B=06 0C=00 0D=21 0E=65 0F=6A 10=C8 11=93 12=03 13=22 14=F8 15=34 16=07 17=3C 18=18 19=16 1A=6C 1B=43 1C=67 1D=91 1E=87 1F=6B 20=F8 21=56 22=10 23=EF 24=2C 25=1B 26=1F 27=41 28=00 29=59 2A=7F 2B=3E 2C=81 2D=35 2E=09 2F=00 30=00 31=14 32=F2 33=00 34=C6 35=0D 36=00 37=00 38=10 39=FC 3A=00 3B=00 3C=00 3D=00
; Ints_per_sec: ?
2024.09.26 09:40:13 3: CUL_HM set Keller_Tuer_HM_4ADAF5 getConfig noArg
2024.09.26 09:40:38 2: TSCUL_ReceiveDelayed: nanoCUL_868_1 No data received within 900s; CC1101: C 00=07 01=2E 02=01 03=4F 04=E9 05=CA 06=1A 07=47 08=45 09=00 0A=00 0B=06 0C=00 0D=21 0E=65 0F=6A 10=C8 11=93 12=03 13=22 14=F8 15=34 16=07 17=3C 18=18 19=16 1A=6C 1B=43 1C=67 1D=91 1E=87 1F=6B 20=F8 21=56 22=10 23=EF 24=2C 25=1B 26=1F 27=41 28=00 29=59 2A=7F 2B=3E 2C=81 2D=35 2E=09 2F=00 30=00 31=14 32=F0 33=00 34=C0 35=0D 36=00 37=00 38=10 39=FC 3A=00 3B=00 3C=00 3D=00
; Ints_per_sec: ?
Wie ist dieser Logeintrag zu verstehen und was kann ich tun um dies zu optimieren? Für letzteren ist dies auch nicht der preferred IO.

Dazu sind heute morgen vier von fünf HM-LC-BL1PBU-FM mit MISSINGACK ausgestiegen; nach einem FHEM-Neustart lief alles wieder normal. Ich vermute, dass es was mit dem IO nanoCUL_868_1 zu tun haben könnte. Ggf schon Alterserscheinungen? Die nanoCULs laufen seit März 2021 mit der TSCUL.

Edit: und ich bekomm einmalig:
2024.09.26 10:31:29 1: PERL WARNING: Use of uninitialized value in join or string at ./FHEM/10_CUL_HM.pm line 11629.
Edit 2: was soll mir dieser Logeintrag sagen?
2024.09.26 11:45:03 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

noansi

Hallo yersinia,

bitte teste mal die angehängte Firmware und gib bitte Feedback, ob es damit besser ist.

Gruß, Ansgar.

yersinia

#1432
Mach ich und ich melde mich. Btw, seit einem FHEM-Restart gestern keine weiteren Auffälligkeiten; MISSINGACK kam auch erstmal nicht vor.


Edit: geflasht und im Zuge des FHEM Neustarts auch gleich ein FHEM-Update auf 29166 von heute durchgeführt. Der nanoCUL, welcher direkt am RasPi, auf dem FHEM läuft, hängt, hat anscheinend ein gesteigertes Mitteilungsbedürfnis:
2024.09.27 09:45:27 1: nanoCUL_868_1 is VERSION_TS, VTS 0.43 CSM868, nanoCUL_V1.x_0014
2024.09.27 09:45:27 2: TSCUL_condUpdateHM: nanoCUL_868_1 new condition non-HM
2024.09.27 09:45:28 2: TSCUL_condUpdateHM: nanoCUL_868_1 new condition ok
2024.09.27 09:45:28 2: Switched nanoCUL_868_1 rfmode to HomeMatic
2024.09.27 09:45:32 2: TSCUL_condUpdateHM: nanoCUL_868_2_Net new condition disconnected
2024.09.27 09:45:37 1: nanoCUL_868_2_Net is VERSION_TS, VTS 0.43 CSM868, nanoCUL_V1.x_0014
2024.09.27 09:45:37 2: TSCUL_condUpdateHM: nanoCUL_868_2_Net new condition non-HM
2024.09.27 09:45:38 2: TSCUL_condUpdateHM: nanoCUL_868_2_Net new condition ok
2024.09.27 09:45:38 2: Switched nanoCUL_868_2_Net rfmode to HomeMatic
2024.09.27 09:45:47 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL36
2024.09.27 09:45:47 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:45:47 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL33
2024.09.27 09:46:57 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL35
2024.09.27 09:46:58 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:46:58 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:46:59 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:46:59 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:46:59 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:00 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:00 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:01 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:01 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:02 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:02 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:02 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:03 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:03 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:04 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:04 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:05 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:05 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:06 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:06 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:07 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:07 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:08 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:08 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:08 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:09 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:09 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:10 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:10 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:11 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:11 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:11 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:12 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:12 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:13 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:13 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:14 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:14 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:15 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:15 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:16 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:16 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:17 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:17 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:17 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:18 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:18 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:19 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:19 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:20 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:20 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:20 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:21 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:21 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:22 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:22 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:23 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:23 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:24 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:24 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:25 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:25 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:25 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:26 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:26 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:27 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:27 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:27 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:28 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:28 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:29 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:29 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:30 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:30 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:31 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:31 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:32 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:32 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:33 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:33 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:34 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:34 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:34 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:35 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:35 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:36 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:36 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:36 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:37 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:37 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:38 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:38 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:39 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:39 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:40 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:41 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:41 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:42 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:42 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:47:42 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:47:43 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B
2024.09.27 09:49:48 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3A
2024.09.27 09:49:49 2: TSCUL_Parse: nanoCUL_868_1 PLL Check: PLL3B

Weiterhin bekomm' ich für die fünf HM-LC-BL1PBU-FM  wieder ein MISSINGACK. Teilweise aber auch ein unreachable. Es betrifft auch nur jene Devices, welche primär über den an den RasPi angesteckten nanoCUL_868_1 verbunden sind, die via ser2net angebundenen nanoCUL_868_2_Net haben anscheinend keine Probleme. Obwohl VCCU sowie IOgrp in den Devices gepflegt sind.


Edit 2: hab die nanoCULs mal getauscht um zu schauen ob der Fehler wandert und siehe da, scheinbar liegt es an dem nanoCUL:
2024.09.27 10:16:10 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL36
2024.09.27 10:16:10 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3A
2024.09.27 10:16:10 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL33
2024.09.27 10:17:02 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3A
2024.09.27 10:17:03 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3B
2024.09.27 10:17:03 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3A
2024.09.27 10:17:04 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3B
2024.09.27 10:17:04 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3A
2024.09.27 10:17:05 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3B
2024.09.27 10:17:07 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3B
2024.09.27 10:17:08 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3A
2024.09.27 10:17:08 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3B
2024.09.27 10:17:08 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3A
2024.09.27 10:17:09 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3B
2024.09.27 10:17:09 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3A
2024.09.27 10:17:10 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3B
2024.09.27 10:17:10 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3A
2024.09.27 10:17:11 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3B
2024.09.27 10:17:11 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3A
2024.09.27 10:17:12 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3B
2024.09.27 10:17:14 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3A
2024.09.27 10:17:14 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3B
2024.09.27 10:17:14 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3A
2024.09.27 10:17:15 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3B
2024.09.27 10:17:15 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3A
2024.09.27 10:17:16 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3B
2024.09.27 10:17:26 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3A
2024.09.27 10:17:27 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3B
2024.09.27 10:17:27 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3A
2024.09.27 10:17:28 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3B
2024.09.27 10:17:28 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3A
2024.09.27 10:17:28 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3B
2024.09.27 10:17:30 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3A
2024.09.27 10:17:31 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3B
2024.09.27 10:17:31 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3A
2024.09.27 10:17:32 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3B
2024.09.27 10:17:32 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3A
2024.09.27 10:17:33 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3B
2024.09.27 10:17:39 1: PERL WARNING: Use of uninitialized value $1 in addition (+) at ./FHEM/10_CUL_HM.pm line 2086.
2024.09.27 10:19:11 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3A
2024.09.27 10:19:12 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3B
2024.09.27 10:19:12 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3A
2024.09.27 10:19:13 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3B
2024.09.27 10:19:13 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3A
2024.09.27 10:19:14 2: TSCUL_Parse: nanoCUL_868_2_Net PLL Check: PLL3B

Trotzdem bleibt das Verhalten/Fehlerbild bestehen:
Weiterhin bekomm' ich für die fünf HM-LC-BL1PBU-FM  wieder ein MISSINGACK. Teilweise aber auch ein unreachable - obwohl der eine nanoCUL quasi in Sichtweite ~5m entfernt ist und vorher auch tadellos funktioniert hat.

Ich tausche die zwei nanoCULs wieder und ersetze den nanoCUL_868_1 mal durch einen anderen nano (ein alten aculfws).

Edit3: Den nanoCUL_868_1 getauscht und siehe da, es funktioniert erstmal. Scheint also ein Hardwareproblem gewesen zu sein.
2024.09.27 10:36:42 2: TSCUL_condUpdateHM: nanoCUL_868_1 new condition disconnected
2024.09.27 10:36:48 1: nanoCUL_868_1 is VERSION_TS, VTS 0.43 CSM868, nanoCUL_V1.x_0014
2024.09.27 10:36:48 2: TSCUL_condUpdateHM: nanoCUL_868_1 new condition non-HM
2024.09.27 10:36:48 2: TSCUL_condUpdateHM: nanoCUL_868_1 new condition ok
2024.09.27 10:36:48 2: Switched nanoCUL_868_1 rfmode to HomeMatic
2024.09.27 10:36:53 2: TSCUL_condUpdateHM: nanoCUL_868_2_Net new condition disconnected
2024.09.27 10:36:58 1: nanoCUL_868_2_Net is VERSION_TS, VTS 0.43 CSM868, nanoCUL_V1.x_0014
2024.09.27 10:36:58 2: TSCUL_condUpdateHM: nanoCUL_868_2_Net new condition non-HM
2024.09.27 10:36:59 2: TSCUL_condUpdateHM: nanoCUL_868_2_Net new condition ok
2024.09.27 10:36:59 2: Switched nanoCUL_868_2_Net rfmode to HomeMatic
Ich beobachte das jetzt erstmal.

Somit bleibt nur noch
2024.09.27 10:49:55 1: PERL WARNING: Use of uninitialized value $1 in addition (+) at ./FHEM/10_CUL_HM.pm line 2086.
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

noansi

Hallo yersinia,

im Anhang eine neue Hex für einen weiteren Test.
Ich habe den SPI Zugriff zum cc1101 noch etwas verändert und in den PLL Messages kommt dann auch zusätzlich der aktuelle state des cc1101.

Bitte teste nochmal die Variante auch mit dem faulen nanoCUL, auch wenn ich nicht glaube, dass es mit dem zuverlässig funktioniert. Aber das Logging könnte interssant sein.
Ich vermute, dass die SPI Verbindung zum Tranceivermodul bei dem faulen nanoCUL gestört ist, eventuell durch Nachlöten der Verbindung zum nano zu beheben.

Gruß und Danke für Dein Feedback, Ansgar.

yersinia

Hi noansi,
ich hab die neue Version gestern Abend noch geflasht und bisher liefen die zwei nanos ohne Auffälligkeiten. Den 'faulen' nanoCUL hab ich auch geflasht und umgesteckt und läuft bisher ebenso unauffällig.
2024.09.30 12:08:43 2: TSCUL_condUpdateHM: nanoCUL_868_1 new condition disconnected
2024.09.30 12:08:49 1: nanoCUL_868_1 is VERSION_TS, VTS 0.43 CSM868, nanoCUL_V1.x_0014
2024.09.30 12:08:49 2: TSCUL_condUpdateHM: nanoCUL_868_1 new condition non-HM
2024.09.30 12:08:49 2: TSCUL_condUpdateHM: nanoCUL_868_1 new condition ok
2024.09.30 12:08:49 2: Switched nanoCUL_868_1 rfmode to HomeMatic
Bisher keine MISSINGACK, keine PLL messages im log. Ich werde es beobachten.

Zitat von: noansi am 29 September 2024, 14:11:14Ich vermute, dass die SPI Verbindung zum Tranceivermodul bei dem faulen nanoCUL gestört ist, eventuell durch Nachlöten der Verbindung zum nano zu beheben.
Wie könnte ich das feststellen? Für die nanos nutze ich diese Expansion boards, daran hängt das CC11010 Transceiver(?) Modul mit Kupferantenne (ähnlich diesem). Wenn das Transceiver-Modul einen weg hätte oder die Verbindung nicht iO wäre, müsste der Fehler dann nicht mit anderen nanos wandern? (der ursprüngliche Tausch (#1432) war auch komplett inklusive Transceiver Modul)
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

noansi

Hallo Testwillige,

hier eine neue Version 0.43 der Timestamp Firmware und der dazu benötigten FHEM Module.

Die Version hat einige Verbesserungen erhalten, Auszug aus der Changed:
Version VTS 0.43
- changes/corrections in cc1101 state transition handling
- RfRouter timing changed, not compatible to old versions

Version VTS 0.42
- Digital in/out double reporting of state with set corrected
- DMX serial IO interrupt routines done in assembler for ATMEGA
- Analog in reference feedback modified for Vbg for ATMEGA328P to same bitmask as 1284P
- more robust version change write in eeprom_factory_reset to ensure complete EEPROM reset even on unplug or reset during eeprom_factory_reset
- enhancements in CCA handling
- enhancements in cc1101 state handling
- more generalized error feedback
- ASKSIN readout of more than one packet possibly received in RX-FIFO and receive timestamp taken before RX-FIFO readout

Version VTS 0.41
- CC1101_FSCTRL1 default settings adapted to frequency bands
- marker handling configuration at compile time enhanced
- reduced interrupt disabled times
- CUNX, resolved possible Ethernet connect problems, if connected to a host via USB
- CUNX, speed enhancement in Ethernet connection
- SPI transfer little optimized
- HOERMANN send added
- SOMFY send corrected and optimized
- changed USB currents for CUL and CUNX
- ASKSIN for B112/A112 to multible devices better keep of send order for command after
- fswrapper, qfs, df adapted to reversed buffer access, to be tested
- RFR_SHADOW removed
- serial IO and stacking serial IO interrupt routines done in assembler for ATMEGA
- Analog in function 'a' added, allows read of processor temp voltage for CULV3 or allows analog in on one analog input for ATMEGA (done for CUNO2 and nanoCUL/miniCUL)
- Digital in/out function 'd' added, allows digital input or output on upto 8 digital I/O pins for ATMEGA (done for CUNO2 and nanoCUL/miniCUL)
- added Intertechno V1 send of 'D'. 'D' is sent, if not '0', '1' or 'F' is character

Version VTS 0.40
- HOERMANN receive corrected

Beschreibung 'a' Firmware Kommando für Analoge Eingabe auf einem ADC Pin oder CPU Temperature Voltage:
aiTTT: TTT dezimal. Setzt das Abfrage und Reporting Intervall in Sekunden, 0 schaltet es ab.
        Ist es eingeschaltet, dann kommt im Intervall eine aHHHH Message mit dem Analogwert in 16 Bit HEX

acC:  C Buchstabe. Auswahl der Spannungquelle. Wird kein Buchstabe angegeben, dann wird die aktuelle Einstellung ausgegeben als acX oder aXX hex Code.
        acp wählt den analogen Eingabe Pin, vgl. board.h
        acg wählt Analog GMD
        acr wählt die Vbg Referenzspannung
        act wählt den Temperatursensor (so in der CPU vorhanden)

arC:  C Buchstabe. Auswahl des Referenzwertes. Wird kein Buchstabe angegeben, dann wird die aktuelle Einstellung ausgegeben als acX oder aXX hex Code.
        arA wählt AREF
        ar3 wählt VACC
        ar2 wählt 2.56V interne Referenz
        ar1 wählt Vbg

TSCUL zeigt den Spannungswert im Reading VoltAnIn an. Dazu gibt es noch die Attribute AInVref_AVCC_Volt, AInVref_2_56_Volt und AInVref_Vbg_Volt mit denen die Referenzspannungswerte für die Auswertung kalibriert werden können.
Der CPU Temperaturwert wird im Reading Temperature angezeigt. Jedoch muss dieser für jeden CUL indivudell kalibriert werden. Dazu gibt es das Attribut AInTempCalib zur Einstellung einer linearen Kalibrierung.

Bisher nur kompiliert für CUL V3 (nur interne Temperatur), CUNO2, nanoCUL und miniCUL.
Da direkt an die CPU angeschlossen wird, ist natürlich entsprechende Vorsicht walten zu lassen, um den Eingang nicht mit unzulässigen Spannungen zu zerstören.

Beschreibung 'd' Firmware Kommando für Digitale Ein- und Ausgabe auf bis zu 8 digital I/O Pins.
diTTT: TTT dezimal. Setzt das Abfrage und Reporting Intervall für die Pins in Sekunden, 0 schaltet es ab.
        Ist es eingeschaltet, dann kommt im Intervall eine dHH Message mit den Pin Stati in 8 Bit HEX

doHH:  HH hex. Setzt die in HH mit binär 1 gesetzten Pins auf Ausgang, mit binär 0 gweählten Pins auf Eingang.
        Ist ein Pin auf Eingang geschaltet, so werden keine Pullup oder Pulldown Widerstände aktivert. Der Eingang ist also unbeschaltet floatened und liefert demensprechend wechselnde Statuswerte.
        Wird kein Hex Wert angegeben, wird die aktuelle Auswahl als doXX als 6 Bit HEX ausgegeben

dr:    Liest den aktuellen Pin Status als dHH, wie beim Intervall.
drII:  Liest den aktuellen Pin Status des mit II (hex, 0-7) gewählten Pins als dII0 oder dII1. Eine ungültige Pinnummer II liefert ein ?.

dsVV:  setzt alle gewählten Ausgänge auf den Wert im übergebenen 8 Bit HEX Wert VV
dsOOvv: setzt den mit OO (hex, 0-7) gewählten Pin auf 1 wenn vv ungleich 0 oder auf 0, wenn vv gleich 0.
        Ist der Pin nicht mit do auf Ausgabe gewählt, dann passiert nichts.  Eine ungültige Pinnummer OO liefert ein ?.
        Es wird abschließend der aktuelle Pinstatus als dHH ausgegeben, wie bei Intervall.

TSCUL zeigt den Pin Status als Reading DigIn 0xXX hex an.

Bisher nur kompiliert für CUNO2, nanoCUL und miniCUL.
Da direkt an die CPU angeschlossen wird, ist natürlich entsprechende Vorsicht walten zu lassen, um den Eingang nicht mit unzulässigen Spannungen zu zerstören.
Beim do Kommando muss natürlich darauf geachtet werden, den Ausgang nicht zu überlasten, z.B. durch schalten auf eine Spannungsquelle...

CUNO2 Pins auf Jp1:
Pin 1 (CPU PC2)  Digital Ein- oder Ausgang 0
Pin 2 (CPU PA0)  Analogeingang
Pin 3 VDD
Pin 4 GND
Pin 5 (CPU PC3)  Digital Ein- oder Ausgang 1
Pin 6 +5V von USB

nanoCUL:
Board pin A4 (CPU PC4)  Digital Ein- oder Ausgang 0
Board pin A5 (CPU PC5)  Digital Ein- oder Ausgang 1
Board pin A7 (CPU ASC7) Analogeingang


Die Version 0.39 bietet einige Timingänderungen für HM. Außerdem ist das Commandref überarbeit. Bei TSCUL werden sets und gets nun abhängig von rfmode und unterstützten Firmwarebefehlen angeboten.

Die Version 0.38 verhindert repeats für TC und TH Messages, was für virtuelle TC und TH Sensoren sinnvoll ist.
Auszug aus de Changed:
- ASKSIN repeats for TC and TH messages set to 0
- ASKSIN Ag command added, allow setting ASKSIN non FUP AGCCTRL2 value in EEPROM
Außerdem Verbesserungen in Modulen, insbesondere für virtuelle TCs und TH Sensoren.
Beim Reboot nach dem Flashen werden alle EEPROM Einstellungen auf Default gesetzt. Also alle am CUL vorgenommenen Einstellungen notieren, um sie wieder einstellen zu können.

In Version 0.37 ist der Readout des Tranceiver RX Fifos insbesondere für ASKSIN verändert. Beim Reboot nach dem Flashen werden alle EEPROM Einstellungen auf Default gesetzt. Also alle am CUL vorgenommenen Einstellungen notieren, um sie wieder einstellen zu können.
RF_Router und fast_rf sind verändert und nicht kompatibel zu vorherigen Versionen.

Version 0.36 behebt ein Überlaufproblem des RX-FIFOs des Transceivers, der zum Empfangsausfall führen konnte (fiel nur beim reinen Empfangsbetrieb ohne regelmäßiges Senden auf). Danke Stefan für den Hinweis.

Auszug aus der Changed:
- little correction in rf_native, if slowrf monitoring is active
- lacrosse emu reworked
- SlowRf reception adapted for better ESA reception with still well E and HMS reception
- generic Manchester raw send added with Gm command
- ESA send added with 'S' command
- HMS send added with 'Q' command
- IT reception corrected
- RfRouter with repeat in FastRF packet, better send timing and reduced receive timeout
- for pure USB CULs blinking while waiting on watchdog reboot and during boot/bootloader reboot with different frequencies
- message finalization with \n on PIM receive buffer full
- ASKSIN, fastRF, RF-Router, moritz, rwe, RX-FIFO Overflow detection improved

Noch als Hinweis, für HMS und ESA scheint sens 12 eine ungünstige Einstellung für den Empfang  dieser Protokolle zu sein.

Diese Version bietet wakup support und keep awake Support. Für CULs mit wenig Speicher kann dies mit dem Attribut "hmForceLzyCfg" aktiviert werden, siehe auch der Hinweis zum EEPROM Verschleiß weiter unten.

Das RF-Router Ping Timing ist geändert, damit also auch nicht kompatibel mit Standard culffw oder a-culfw und auch nicht zur Version 0.32.
Ergänzt ist SlowRf Empfang von Pearl NC7427 Temperatur/Luftfeuchte Sensoren. Entsprechend Kanalwahlschalter können 3 Stück empfangen werden. Zum Anlernen mittels autocreate muss der TEST Taster am Sensor gedrückt werden.

Das EEPROM Layout ist geändert und daher werden nach dem Flashen alle Einstellungen auf default zurück gestellt. Also vor dem Flashen individuelle Einstellungen, z.B. Frequenzoffsets, notieren und nacher neu einstellen.

Auszug aus der Changed:
- FULL_PA_RAMPING bugs corrected
- CCA CS thresholds setable for ASKSIN, MORITZ, HAS_RWE, RFNATIVE and MBUS with XTxy, x=CARRIER_SENSE_REL_THR, y=CARRIER_SENSE_ABS_THR as in AGCCTRL1
- SlowRf receive timing limits corrected
- SlowRf lower filter switched off by define in rf_receive_timing.h
- RFR timing/timeout shortened, FastRF CCA disabled
- auto Ci interrupt counter messages
- XP command extended to switch on auto Ci messages, AP removed as all PLL messages switchable by XP
- improvement and corrections for CUNX RS485 PIG support
- CUNX: PIG RTS controllable by USB Host for serial foward and RS485 serial forward
- CUNX: DMX interupts changed to HI priority and CC1101 interrupts to MED priority
- CUNX: USB interrupts to LO priority
- GPIOR1 used for USB USB_DeviceState
- GPIOR1 used for SERIAL STACKING stacking_ST_state


Ein Peakfilter für SlowRF Empfang ist ergänzt und mit "peakfilter" einstellbar.
In dem Zusammenhang ist auch das RF-Router Ping Timing geändert, damit also auch nicht kompatibel mit Standard culffw oder a-culfw.
Außerdem kann das Senden von RF-Router Daten nach deren Empfang einstellbar verzögert werden (RfRdelay).

CCAMode wirkt nun auch auf IT-Senden und SOMY-Senden, sowie auf das Senden des RF-Router Pings. Mit fRfCCAMode kann auch das CCA Verhalten für RF-Router Senden und FastRF geändert werden.

Auszug aus der Changed:
- IT and SOMYFY use SlowRF EEPROM CCA setting now for sending
- changes in SlowRF reception for reset and sync start. IT V1 reception tested succsessfully.
- SlowRF filter and match adaption
- SlowRF spike filter improved, max. peak lenght settable with Xpxx, xx hex time in 8us units
- IR receive/transmit pause during send of SlowRF changed to not globally switching off all interrupts
- periodic RF-Router ping RSSI display as "Cuxx\r\n" with xx = RSSI Hex
- RF-Router ping timing changed for better distinguish from other protocols
- RF-Router pre silence before send settable with uRxx, xx hex time in 4ms units
- Xrrt commands bits:
  rr:
  report known protocol data                                                      Bit 0
  report repeated data                                                            Bit 1
  report received bits                                                            Bit 2
  report 'r' (rising) or 'f' (falling) edge, '.' (collect) or '?' (sync) timeout  Bit 3
  report edges, bit times and timeouts                                            Bit 4
  report S300 data with valid checksum only                                      Bit 5
  report FHT                                                                      Bit 6
  report 'l' RSSI decimal data continuosly                                        Bit 7
  t:
  report recorded SlowRF timing                                                  Bit 0
- corrections in interrupt flag clearing
- correction in delay function
- fastRF bug corrected, untested
- EEPROM layout changed for the new parameters


TSCUNX kann mit entsprechendem RS485 Modul nun auch DMX.
Auch HM485 ist für TXCUNX angepasst.
In dem Zuge ist auch die DMX Funktionalität bei CUNO2 etwas erweitert.
IR läuft nun auch richtig mit TSCONO2.
Außerdem läuft RF-Router auf der tsculfw, allerdings mit einer Änderung. Das 'U' ist durch '~' ersetzt. 'U' kollidierte mit dem Uniroll Senden.

Kurzer Auszug aus der CHANGED:
- IO optimizations CUNX, especially to/from PIM and Ethernet
- CUNX DHCP non blocking operation
- IO optimizations
- HM485 support for CUNX (like CUNO2) with RS485 PIM.
  HM485 switch off with Hx for CUNX. With CUNX after Hx RS485 PIM again accessible via PIM USB or Ethernet Interface
- CUNX support for DMX and HM485 with RS485 PIM (to be tested), a Dwxxxxyy switches to DMX via CUNX Interface, a Hsxxxxxxxxxxxxxxxxxx switches to HM485 via CUNX Interface
- DMX switch off with Dx. With CUNX after Dx RS485 PIM is again accessible via PIM USB- or Ethernet Interface
  DMX flexible channel usage. Channels are sent out upto the highest channel set (0 sent as default for unset channels). With switching off with Dx the highest channel is reset.
  DMX changed in timing and resting behaviour. Rests on IDLE if less then 24 device, only, to keep 1204µs min. BREAK to BREAK (to be tested)
  DMX Dt command to set/view timing of MarkAfterBreak and BREAK
  DMX less disturbed while sending SlowRF
- W function gives feedback after writing EEPROM
- clock timer unburdened, may impact onewire and fht (to be tested)
- corrections for IRTX
- IR base timings changed to 12500Hz or 20000Hz
- RF-Router working, but 'U' changed to '~' (definable in board.h, but 'U' disables HAS_UNIROLL)

Es ist eine Prüfung auf Stacküberlauf eingebaut. Am Anfang des heap werden zwei Byte mit einem Bitmuster beschrieben. Wird das verändert, dann ist der Speicher wahrscheinlich korrumpiert, was durch einen Stacküberlauf ausgelöst sein sollte. Sofern der CUL dann noch kann sendet er ein "C_M" an TSCUL, was zu einem entsprechenden Log Eintrag führt.
Damit kann man vorsichtig die Speichergrenzen ausloten. Ein langer Testzeitraum ist aber erforderlich, um einigermaßen sicher zu sein, dass der worst case auch mal durchlaufen worden ist.
Außerdem ist ein Kommando mU (je nach Firmware) eingebaut, mit dem man den vom Stack ungenutzen heap in etwa auslesen kann (auch als get unusedstack in TSCUL verfügbar). Auch hier gilt, nur nach langer Laufzeit einigermaßen sinnvoll. Es macht sicher keinen Sinn auf Grund des Wertes den Speicher bis auf das letzte Byte auszuquetschen, denn weiterhin hängt die Stacknutzung vom gewählten Protokoll und Einstellungen ab.

In TSCULflash ist Flashen auch von NanoCULs und MiniCULs ergänzt. Vor dem Flashen wird ein "B00" also Reset für die TSCUL Firmware an den nano/Mini geschickt, 1 Sekunde gewartet und dann versucht mit avrdude zu flashen.
Also erst die Firmware in den FHEM/Firmware Ordner kopieren und dann in FHEM mit
TSCULflash <nanodevicename> TSnanoCULbzw.
TSCULflash <minidevicename> TSminiCULversuchen zu Flashen. Im Log sollte danach (dauert etwas) die avrdude Ausgabe zu finden sein.

Ebenfalls (nur über USB Anschluss) möglich ist das Flashen eines PIGATOR Moduls an einem CUNX
TSCULflash <pigatordevicename>|<cunxdevicename> TSPIGATOR
AESCommReq wird unterstützt. Die Nutzung ist unverändert zu Standard CUL, sprich, beim gewünschten Gerät/Kanal aesCommReq auf 1 setzen und ggf. noch aesKey passend zum verteilten Key setzen.
Es werden von tsculfw nur die Keys 0 (Default Key) bis 3 unterstützt.

Diese Erweiterung erfordert jedoch auch zusätzliche Empfangspuffer im knappen Speicher des CULs. Ein CUL V3 nutzt bis zu 6 Empfangspuffer. Auch der FlashSpeicherbdarf ist angestiegen, so dass einige Protokolle nicht mehr gleichzeitig in ein Kompilat passen. Das sollte aber weniger tragisch sein, da im ASKSIN Modus ohnehin nur HM empfangen werden kann.

Bei CUL V2 reicht der verfügbare Speicher leider hinten und vorne nicht aus, um diese Version nutzen zu können.

Im Anhang ist in TSCUL_fwcode_00_xx.zip und FHEM_Modules_00_xxx.zip wieder die Timestamp Firmware zu finden. Getestet habe ich TSCUNX, TSPIGATOR , TSCUL_V3, TSCUL_V3_RFR, TSCUNO2, TSCOC und TSSCC. (TSCUL_V3_RFR ist ohne HM Unterstützung, also nur SlowRF)

Die tsculfw Firmware kann für TSCUL_V3, TSCUL_V3_RFR (via USB), TSCUNO2, TSCOC, TSSCC, TSCUNX und TSPIGATOR (an CUNX) mit FHEM mit dem TSCULflash geflashed werden. Die anderen müssen mit dem jeweiligen Flash Programmer geflashed werden. Bei CUNO2 und SCC muss die Bootloadertaste gedrückt werden, bis der Flashvorgang anläuft.
So z.B. https://forum.fhem.de/index.php/topic,24436.msg631743.html#msg631743 kann es mit einem USB CUL Stick gehen, wenn man nicht TSCULflash verwendet.
TSCULflash ist erweitert auf COC, SCC, CCD, rpiaddon, CUNO2 und CUNO. Jedoch ist es nicht ganz so einfach zu handhaben, da zum einen teilweise die Taste zu drücken ist und bei Raspberry PI Modulen die Rechteproblematik für den Zugriff auf die IO-Pins überwunden werden muss. Tips dazu in der Command-Ref auch bei RPI_GPIO.
Bei einem Stapel aus SCC mit aufgesetztem COC, CCD oder (rpiaddon?) ist unbedingt beim SCC Flash darauf zu achten, die Taste am gewünschten Modul zu drücken. Sonst wird das oberste Nicht-SCC Modul mit der SCC Firmware geflashed.
Mit CUNO2 ist das flashen getestet (generell nur über USB!). Wichtig, aber auch hier, die Taste zu drücken.

Es gibt nicht den Luxus des Downloads beim TSCULflash, sondern die Firmware muss händisch in den FHEM/firmware Ordner kopiert werden. Der Typ ist dann z.B. TSCUL_V3.
Beispiel:
TSCULflash MeinCulV3Device TSCUL_V3
Wichtig für SCC Nutzer. TSSTACKED ist entfallen und wird nicht mehr unterstützt.
Statt dessen gibt es das neue Modul STACKABLETS (als Abwandlung von Rudolfs STACKABLE).
Dieses wird sozusagen zwischen die Stackteilnehmer eingebaut.

Beispiel für fhem.cfg:
#erstes SCC Modul als Basis
define SCC_WS868 TSCUL /dev/ttyAMA0@38400 0000
attr SCC_WS868 event-on-change-reading Ints_per_sec,IntCalcStat,MatchStat
attr SCC_WS868 rfmode SlowRF
attr SCC_WS868 room Receiver
attr SCC_WS868 sendpool CUL_HM868,SCC_WS868
attr SCC_WS868 verbose 1

#neues STACKABLETS virtuelles IO device
define STACK_1 STACKABLETS SCC_WS868
attr STACK_1 verbose 1

#zweites SCC Modul
define SCC_HM868 TSCUL FHEM:DEVIO:STACK_1:38400 1034
attr SCC_HM868 event-on-change-reading cond
attr SCC_HM868 hmId F11034

Ergänzender Hinweis zu USB CULs: Nach dem flashen von TSCUL kann es sein, dass das Betriebssystem TSCUL eine neue Schnittstelle zuweist und ggf. auch anderen USB devices. Auf Linux mit "dmesg" heraus zu lesen.
Auch beim Neustart des Systems kann sich die Reihenfolge ändern. Bei meinem Raspi sogar abhängig von der Startart Reboot oder Einschalten.
Für CULs mit nativer USB Schnittstelle (z.B. CUL V3.x oder CUN) kann die \Firmware\tsculfw-code-459-trunk_lufa_00_08\culfw\Devices\99-usb-serial.rules nach /etc/udev/rules.d/99-usb-serial.rules kopiert werden. Dann wird CUL stets der Schnittstelle /dev/CUL868_0 (oder /dev/CUL433_0 bei 433.9MHz Version) zugewiesen und er kann mit
define CUL_868 TSCUL /dev/CUL868_0@12000000 1234bzw.
define CUL_433 TSCUL /dev/CUL433_0@12000000 0000definiert werden und es gibt keine Probleme mit wechselnder Schnittstelle mehr.
Die Seriennummer kann beim Compilieren der Firmware in der board.h festgelegt werden, so dass damit dann auch /dev/CUL868_1 etc. für mehrere gleiche CULs möglich sind.

Oder für CUNX
define CUNX_868 TSCUL /dev/CUNX868_0@12000000 0000oder für PIGATOR an CUNX
define PIGATOR_433 TSCUL /dev/CUNXPIM_0@38400 0000die Seriennummer wird aus der Seriennummer des XMEGA Chips des CUNX gebildet. Unter Linux lsusb nutzen!

Das geht leider nicht bei nicht nativen USB CULs wie z.B. nanoCUL oder CUNO2. Hier muss eine 99-usb-serial.rules nach den Daten in der dmesg Ausgabe erstellt oder modifiziert werden, um den gleichen Effekt zu erzielen, sofern der USB-Seriell Interfacebaustein eine eindeutige Seriennummer liefert.
Ansonsten kann es noch mit der USB-Schnittstelle probiert werden, an der CUL eingesteckt ist ("lsusb" Ausgabe), was an meinem RasPi aber nicht funktioniert hat, da dieser abhängig von Warmstart oder Kaltstart andere USB-Portnummern vergibt.

Bei nicht nativen USB CULs wie z.B. nanoCUL, miniCUL oder CUNO2, beträgt die Baudrate 38400, dementsprechend muss die Definition beispielsweise so aussehen:
define CUL_868 TSCUL /dev/CUL868@38400 1234bzw.
define CUL_433 TSCUL /dev/CUL433@38400 0000
Und noch ein Beispiel für eine Definition eines Netzwerk CUNX:
define CUL_868 TSCUL 192.168.178.111:2323 0000oder für PIGATOR an CUNX
define PIGATOR_433 TSCUL 192.168.178.111:2324 0000beim PIGATOR sollten zuvor mit Anschluss an USB und öffnen der Schnittstelle mit gewünschten Kommunikationsparametern mit ps oder unter TSCUL mit set PIMstoreBaud die seriellen Kommunikationsparameter zum PIGATOR Modul gespeichert werden, falls sie vom default abweichen.

Oder Netzwerk CUNO2:
define CUNO2_868 TSCUL 192.168.178.110:2323 0000
Die aktuell eingestellte oder per DHCP erhaltene Netzwerkadresse kann mit Lc repektive in TSCUL mit get NetAdresses abgefragt werden. Mit Lp respektive in TSCUL mit get NetPHYlink kann der Linkzustand des Netzwerkanschlusses angezeigt werden.


In der Zip Datei sind ebenfalls die ergänzten Module zu finden, die zur Nutzung der Firmware erforderlich sind.

00_TSCUL.pm        -> statt der 00_CUL.pm, aus CUL devices werden damit TSCUL devices in der fhem.cfg (händisch anzupassen)
DevIoTS.pm            -> verbesserte Version von DevIo.pm für die TS Module
16_TSCUL_RFR.pm -> der 16_CUL_RFR.pm, aus CUL_RFR devices werden damit TSCUL_RFR devices in der fhem.cfg (händisch anzupassen)
16_STACKABLETS.pm -> statt der 16_STACKABLE.pm, aus STACKABLE werden damit STACKABLETS devices in der fhem.cfg (händisch anzupassen)
97_timerTS.pm          -> Austausch-Timerroutinen und fhemFork()

10_UNIRoll_TS.pm  -> statt der 10_UNIRoll.pm, mit TSCUL IO-devices zu verwenden, aus UNIRoll wird dann UNIRoll_TS  in der fhem.cfg (händisch anzupassen)
13_TSKS300.pm    -> statt der 13_KS300.pm, mit TSCUL IO-devices zu verwenden, aus TSKS300 wird dann TSKS300  in der fhem.cfg (händisch anzupassen). Obsolet, da 14_TSCUL_WS.pm nun KS300 unterstützt.
14_TSCUL_TX.pm    -> statt der 14_CUL_TX.pm, mit TSCUL IO-devices zu verwenden, aus CUL_TX wird dann TSCUL_TX  in der fhem.cfg (händisch anzupassen)
14_TSCUL_WS.pm  -> statt der 14_CUL_WS.pm, mit TSCUL IO-devices zu verwenden, aus CUL_WS wird dann TSCUL_WS  in der fhem.cfg (händisch anzupassen)
14_TSCUL_NC7427.pm  -> NC7427 Unterstützung
15_TSCUL_EM.pm  -> statt der 15_CUL_EM.pm, mit TSCUL IO-devices zu verwenden, aus CUL_EM wird dann TSCUL_EM  in der fhem.cfg (händisch anzupassen)
12_TSHMS.pm        -> statt der 12_HMS.pm zu verwenden
CalcUtil.pm              -> Hilfsrechenroutinen für Taupunkt und Windstärkeindex
ReadingUtil.pm          -> Hilfsroutinen für Readings

Da diese Module ergänzt werden (müssen!), überleben sie auch ein Update von FHEM.

98_fhemdebug.pm    -> fhemdebug zur zwingenden Nutzung mit 97_timerTS.pm.
98_apptime.pm          -> apptime zur zwingenden Nutzung mit 97_timerTS.pm.
98_apptm.pm            -> apptime zur zwingenden Nutzung mit 97_timerTS.pm, mit geringerem Speicherverbrauch bei weniger Details
10_IT.pm                  -> vermeidet unnötiges busy waiting beim Senden. Wird ohne Schutz von FHEM update überschrieben

Außerdem:

98_TSCULflash.pm    -> Zum Flash von TSCUL_V3, TSPIGATOR (an CUNX) mit Datei in FHEM/firmware

10_CUL_HM.pm        -> angepasste Version zur Nutzung mit TSCUL/tsculfw. Die Nutzung dieses Moduls ist optional. Für CUL_V3, nanoCUL, miniCUL im Multio-HM-IO Betrieb jedoch empfohlen, da sie den EEPROM Verschleiss über das Attribut "rssiSwitchHyst" verringert. Nur diese Version bietet derzeit vollständige TSCUL/tsculfw Unterstützung. Zur Einsparung redundanter Events werden teilweise Readings (actuator, desired-temp, measured-temp) nicht mehr zusätzlich im HM-device, sondern nur noch in den jeweiligen Channels aktualisiert.
HMConfig.pm            -> mit der enthaltenen 10_CUL_HM.pm zwingend zu verwenden. Einstelllimits für HM-CC-RT-DN Regler P und I Anteil erweitert. Damit kann man mit R-regAdaptive offDeter deutlich mehr an den Regelparametern spielen.
98_HMinfo.pm          -> mit der enthaltenen 10_CUL_HM.pm zwingend zu verwenden. Spaltenbreiten in Tabelle von protoEvents variabel zu verbesserten Übersicht in der Darstellung.
98_HMtemplate.pm  -> mit der enthaltenen 10_CUL_HM.pm zwingend zu verwenden.
Die 4 Dateien entsprechen einem Stand von Anfang 09/2020. Derzeit sollten diese verwendet werden.

10_CULG.pm              -> optional, enthalten, da die Firmware es unterstützt

98_autocreate.pm      -> autocreate mit TSCUL Unterstützung

98_Cumulate              -> Kumulieren von Zählwerten, wie Strom, Regenmenge etc.
98_SAverage.pm        -> Mittelwertbildung von z.B. Temperaturen. Stunde, Tag, Monat und Jahr, sowie ein gleitender Mittelwert der letzten Stunde sind damit möglich.
98_IntervalTimer.pm  -> optional, Intervalltimer um FEHM-Timerbasiert Kommandos in möglichst konstanten Intervallen absetzen zu können.

Wie immer, vor Austausch und Veränderungen der Module und fhem.cfg, erst Backup dann Ändern!

Mit folgendem Eintrag (oder Ergänzung des attributs) in der fhem.cfg kann man das fhem Update am ungewollten Austausch der angepassten Module hindern:
attr global exclude_from_update 00_TSCUL.pm 16_STACKABLETS.pm DevIoTS.pm 10_UNIRoll_TS.pm 13_TSKS300.pm 14_TSCUL_TX.pm 14_TSCUL_WS.pm 15_TSCUL_EM.pm CalcUtil.pm 14_TSCUL_NC7427.pm ReadingUtil.pm 97_timerTS.pm 98_TSCULflash.pm 98_apptime.pm 98_apptm.pm 10_IT.pm 10_CULG.pm 10_CUL_HM.pm HMConfig.pm 98_HMinfo.pm 98_HMtemplate.pm ReadingUtil.pm 98_autocreate.pm 98_Cumulate.pm 98_SAverage.pm 98_fhemdebug.pm
Hier https://forum.fhem.de/index.php/topic,24436.msg501057.html#msg501057 noch Rudolfs zwingend auszuführender Tip zur Aktualisierung des Commandref  nach dem Kopieren/Austausch der Dateien so dass dann auch Doku zur Nutzung zu lesen ist.
fhem> { `perl contrib/commandref_join.pl` }
Noch ein Hinweis: TSCUL fragt auch die Firmwareversion der tsculfw auf 0.40 ab. Eine ältere Version wird also nicht unterstützt!

Frequenzoffset: Für HM ist ein Frequenzoffset von -20.6kHz im EEPROM als default in der tsculfw hinterlegt (das ist ein individuelles Optimum für meinen COC). Dieser Frequenzoffset kann mit set hmFreqOffs umgestellt werden. 0 ist default in der Standard-culfw.
Wenn also keine Antwort von angesprochenen HM devices kommt, dann hmFreqOffs von 0 ausgehend verstellen. CUNX z.B. geht eher in Richtung + mit dem Offset.
Wer das Frequenzspektrum sichtbar machen kann, kann sich die optimale Mitte aller devices ermitteln und mit dem Offset sein CUL dazu passend einstellen.

Noch ein Tip zur Haltbarkeit der CULs mit wenig SRAM (CUL V3, nanoCUL, miniCUL ...). Jedesmal, wenn einem HM-Device das IODev durch Roaming neu zugeordnet wird, führt das zu EEPROM Schreibvorgängen in den beteiligten CULs. Die Lebensdauer des EEPROMs ist begrenzt (100000 Schreibzyklen laut Datenblatt). Daher rate ich zur Nutzung des VorzugsIOs beim Device Attribut IOgrp. Also nicht einfach stumpf
attr HMdeviceName IOgrp VCCUsetzen, sondern
attr HMdeviceName IOgrp VCCU:CUL_mit_gutem_Empfang_fuer_Devicesofern die Roaming Funktionalität entsprechend RSSI für das jeweilige device nicht zwingend benötigt wird. Ein Fallback auf einen anderen CUL bleibt dennoch möglich.
Mit dem Attribut "rssiSwitchHyst", das in der beigefügten 10_CUL_HM.pm verfügbar ist, kann bei den HM-devices die Umschalthysterese für das Roaming von 10 bis auf 2 bei Bedarf für mobile devices verringert werden.
Das Attribut "hmForceLzyCfg" ist entfernt, damit wakeup und keep awake support bei solchen CULs immer aktiviert. Das erhöht den EEPROM Verschleiß beim Lesen oder Verändern von Registerwerten bei wakup und lazy config devices. Reserve CUL zur Hand haben kann nicht schaden, wenn das EEPROM schwächelt.

Ergänzt ist auch noch ein set TX3Send.
Damit lassen sich TX3 Sensordatentelegramme auf 433er CULs versenden.
Beispiel:
define NF_TempOut notify Sen_Aussen:temperature.*  {fhem("set TSCUL_WS433 TX3Send T:".(ReadingsVal("Sen_Aussen","temperature","n.a."))." SID:23 U")}

define NF_HumOut notify Sen_Aussen:humidity.* {fhem("set TSCUL_WS433 TX3Send H:".(ReadingsVal("Sen_Aussen","humidity","n.a."))." SID:23 U")}

Ergänzt ist auch noch ein set KSSend.
Damit lassen sich WS Sensordatentelegramme versenden.
Beispiel:
define NF_TempOut notify Sen_Aussen:temperature.*  {fhem("set TSCUL_WS433 KSSend T:".(ReadingsVal("Sen_Aussen","temperature","n.a."))." H:".(ReadingsVal("Sen_Aussen","humidity","n.a."))." Code:2")}

Zum regelmäßigen Senden von Sensordaten kann der IntervalTimer genutzt werden.
Beispiel:
define AussenSend_WS11 IntervalTimer CUNO2_WS868 176.5
attr AussenSend_WS11 offCmd {fhem("set @ KSSend T: ".ReadingsVal("C_Aussen","temperature",0.0)." H: ".ReadingsVal("C_Aussen","humidity",0.0)." Code:21")}
attr AussenSend_WS11 onCmd {fhem("set @ KSSend T: ".ReadingsVal("C_Aussen","temperature",0.0)." H: ".ReadingsVal("C_Aussen","humidity",0.0)." Code:21")}

Hier geht es zur vorherigen Version https://forum.fhem.de/index.php?msg=1320574.

Gruß, Ansgar.

noansi

Hallo yersinia,

den letzte Stand habe ich dann mal in eine neue Version überführt, siehe oben.

ZitatDen 'faulen' nanoCUL hab ich auch geflasht und umgesteckt und läuft bisher ebenso unauffällig.
Der korrigierte SPI Zugriff hilft offenbar auch bei dem?!
So ganz verstehe ich es aber nicht, weil in Deinem Problem Log alle Strobes bei dem problematischen dabei waren, aber nur ein Teil hätte sein dürfen.
Deswegen der Verdacht auf eine schlechte SPI Verbindung.
Vieleicht hast Du die nun durch Bewegen des nanoCUL auch (temporär?) wieder geheilt.

ZitatWie könnte ich das feststellen?
Mit Oszi CS, MISO, MOSI und SCKL Signale anschauen, ob die sauber auf beiden Seiten ankommen.

Gruß, Ansgar.

yersinia

Hi noansi,
hab heute morgen neue fw geflasht und die neuen Module (waren ja nur 00_TSCUL.pm und 10_CUL_HM.pm zum vorherige Update). Läuft bisher unauffällig bzw. wie erwartet - auch mit dem 'faulen' nanoCUL. Danke vielmals nochmal für deine Mühen. :)

Zitat von: noansi am 30 September 2024, 21:18:43Der korrigierte SPI Zugriff hilft offenbar auch bei dem?!
So ganz verstehe ich es aber nicht, weil in Deinem Problem Log alle Strobes bei dem problematischen dabei waren, aber nur ein Teil hätte sein dürfen.
Deswegen der Verdacht auf eine schlechte SPI Verbindung.
Vieleicht hast Du die nun durch Bewegen des nanoCUL auch (temporär?) wieder geheilt.
Möglicherweise ja. Ich hab auch den Aufbau insgesamt abgestaubt gehabt bei der Gelegenheit. Was mich nur wundert ist, dass der Fehler beim ersten mal mitwanderte, dann (nur) den nano getauscht und dann wieder auf den 'faulen' zurück getauscht und alles ist wieder gut? Find' ich merkwürdig. Ich werds' Beobachten.

Zitat von: noansi am 30 September 2024, 21:18:43Mit Oszi CS, MISO, MOSI und SCKL Signale anschauen, ob die sauber auf beiden Seiten ankommen.
Die Möglichkeiten hab ich leider nicht. Außer einer Sichtkontrolle kann ich da nicht viel prüfen...
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

frank

Zitat von: yersinia am 01 Oktober 2024, 11:34:58Was mich nur wundert ist, dass der Fehler beim ersten mal mitwanderte, dann (nur) den nano getauscht und dann wieder auf den 'faulen' zurück getauscht und alles ist wieder gut? Find' ich merkwürdig. Ich werds' Beobachten.
wenn ich das richtig verstehe, hast du beim 2. tausch den nano aus dem expansion-slot entfernt.

eventuell gab es kontaktprobleme bei den steckkontakten durch "korrosion", die durch die mechanischen steckbewegungen beim wechseln verschwunden sind.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

noansi

Hallo yersinia, hallo Frank,

Zitateventuell gab es kontaktprobleme bei den steckkontakten durch "korrosion", die durch die mechanischen steckbewegungen beim wechseln verschwunden sind.
Auch eine Möglichkeit.

Edit:
2024.09.27 10:49:55 1: PERL WARNING: Use of uninitialized value $1 in addition (+) at ./FHEM/10_CUL_HM.pm line 2086.lasse ich in CUL_HM unverändert, weil das nur die erweiterten unknown Readings (letztes Ziel, laufende Anzahl, letzte Länge und RSSI) in der VCCU betrifft und wenn Du die vorhandenen alle nochmal empfangen hast, verschwindet das von selbst.

Zitat(waren ja nur 00_TSCUL.pm und 10_CUL_HM.pm zum vorherige Update)
und 98_HMinfo.pm und 98_HMtemplate.pm.

Gruß, Ansgar.