Neuigkeiten:

Am Sonntag den 8.12.2024 kann es ab ca. 8:00 Uhr zu kurzzeitigen Einschränkungen / Ausfällen bei den Diensten des FHEM Vereines kommen.
Die Server müssen mal gewartet und dabei neu gestartet werden ;)

Hauptmenü

FHEM +OWX OneWire +ConfigurableFirmata auf Arduino Uni Wifi Rev2 - keine Sensors

Begonnen von wuzzi, 15 Juli 2024, 19:38:29

Vorheriges Thema - Nächstes Thema

wuzzi

Hallo,

Ich nutze seit einiger Zeit FHEM mit nur einem CUL zur Steuerung von Funk-Rollläden.
Mit der ConfigurableFirmata (Firmata Firmware Version ConfigurableFirmata V_3_02 (using Protocol Version V_2_06)) wollte ich jetzt an einem Arduino Uno Wifi Rev2 zusätzliche Digital/Analoge/1Wire/DHT Eingänge und Ausgänge standardmäßig bereitstellen.

Um eine lauffähige Version zu "erzwingen" habe ich folgende Änderungen im Standardbeispiel ConfigurableFirmata.ino vorgenommen:
.) Auskommentiert: //#define ENABLE_SERVO
.) Anstelle der WiFi Library im Standardbeispiel verwende ich die WiFiNINA Library.
.) SET_PIN_MODE war doppelt deklariert, weshalb ich zum Lauffähig bringen ConfigurableFirmata.h,cpp, und FirmataExt.cpp, SET_PIN_MODE umbenannt habe (SET_PIN_MODE_MOD).
.) Die Boards.h wurde um die Hardware erweitert:
// Arduino UNO WiFi rev2 (ATMega 4809)
#elif defined(__AVR_ATmega4809__)
#define TOTAL_ANALOG_PINS       6
#define TOTAL_PINS              20 // 14 digital + 6 analog + /* 3 SPI (unexported, on ISP header) */
#define VERSION_BLINK_PIN       25
#define PIN_SERIAL1_RX          0
#define PIN_SERIAL1_TX          1
#define IS_PIN_DIGITAL(p)       ((p) >= 0 && (p) < TOTAL_PINS)
#define IS_PIN_ANALOG(p)        ((p) >= 14 && (p) < TOTAL_PINS)
#define IS_PIN_PWM(p)           digitalPinHasPWM(p)
#define IS_PIN_SERVO(p)         (p)
#define IS_PIN_I2C(p)           ((p) == SDA || (p) == SCL)
#define IS_PIN_SPI(p)           ((p) == SS || (p) == MOSI || (p) == MISO || (p) == SCK)
#define IS_PIN_SERIAL(p)        ((p) == 0 || (p) == 1)
#define PIN_TO_DIGITAL(p)       (p)
#define PIN_TO_ANALOG(p)        (p) - 14
#define PIN_TO_PWM(p)           PIN_TO_DIGITAL(p)
#define PIN_TO_SERVO(p)         (p)

FHEM-seitig wurde ein FRM Device angelegt, mehrere FRM_AD, mehrere FRM_IN, ein FRM_OUT, sowie ein OWX am Pin7 (wird auch für oneWire erkannt/angegeben).
Digitale Eingänge, Digitale Ausgänge und Analoge Eingänge funktioniert problemlos.

Bei der Einbindung der OneWire Temperatursensoren hakt es aber leider:
Hardwareseitig ist ein Pullup Widerstand eingebaut und mit der OneWire Library funktioniert das Erkennen der zwei Temperatursensoren einwandfrei. Einen Hardwarefehler seitens Verkabelung kann man relativ sicher ausschließen.

Meine Fragen:
1.) Gibt es eine Kombination an Versionen mit denen FHEM (wurde mit "update" auf letzten Stand aktualisiert) + ConfigurableFirmata nicht kompatibel sind? Welche Kombination würde denn ggf. funktionieren?
2.) Wenn ich mit einem Logic Analyzer das oneWire Signal zu den Temperatursensoren abgreife, sehe ich keine Busaktivitäten. Beim Starten des Arduino wird der Pin einmal auf 0 gezogen und dann beim Aktivieren der Konfiguration auf HIGH gestellt wenn der Pin für OneWire konfiguriert wird. Wie kann ich am Besten austesten, ob FHEM oder ConfigurableFirmata das Problem hat?

Für ein paar Tips wie ich weiter vorgehen sollte wäre ich sehr dankbar!

Beste Grüße,
wuzzi