Entwicklung einer 1wire-zu-WLAN-Bridge

Begonnen von hexenmeister, 18 Dezember 2015, 01:03:45

Vorheriges Thema - Nächstes Thema

habeIchVergessen

#435
wie angedroht habe ich ein paar Code-Zeilen zusammengestrickt.

was geht:
- i2c & gpio (getestet mit GPIO12; GPIO0 hat nicht funktioniert, wenn busmaster vorhanden)
- parasitärer Modus mit gpio kurz getestet; i2c nur implementiert (muss noch löten und ein wenig Doku konsumieren)
- Temperatur-Sensoren lesen

was fehlt (was ich aktuell gebrauchen kann):
- Temperatur-Sensoren Alarm setzen und auslesen
- Switch (DS2406/7) komplett
- locutus count-dev (DS2423)

Nachtrag:
- Arduino ide 1.6.5 r5
- libs ESP8266 v2.3.0, OneWire, DS2482

i2c und gpio zusammen

scanning i2c bus:
found DS2482-100 @ 0x18
done (4.37 ms)

probe gpio #12: ok

bus #1: scanning . (67.85 ms)

bus #2: scanning . (36.58 ms)
list all devices
device: 1d.a20000000002.4d -> DS2423
device: 10.e552e4020800.51 -> DS18S20 res: 12 bit parasite

bus #2: request temperatures  (751.87 ms)
10.e552e4020800.51 read 127.81 (12.74 ms)

bus #2: request temperatures  (751.93 ms)
10.e552e4020800.51 read 127.81 (12.69 ms)

habeIchVergessen

#436
was geht:
- i2c & gpio (getestet mit GPIO12; GPIO0 hat nicht funktioniert, wenn busmaster vorhanden)
- parasitärer Modus mit gpio kurz getestet; i2c nur implementiert (scheinbar geht parasitär nur, wenn APU per configure abgeschaltet wird; sonst werden keine Devices im parasitären Modus erkannt)
- Temperatur-Sensoren lesen, Alarm setzen
- AlarmSearch (ändert sich für Temperatur-Sensor nur beim Berechnen; daher per Software nur ein Alarm pro Interval)

was fehlt (was ich aktuell gebrauchen kann):
- DS2406/7 (Switch komplett)
- DS2423 komplett (locutus count-dev)

habeIchVergessen

was geht:
- i2c & gpio (getestet mit GPIO12; GPIO0 hat nicht funktioniert, wenn busmaster vorhanden)
- parasitärer Modus mit gpio kurz getestet; i2c nur implementiert (scheinbar geht parasitär nur, wenn APU per configure abgeschaltet wird; sonst werden keine Devices im parasitären Modus erkannt)
- Temperatur-Sensoren lesen, Alarm setzen
- DS2406 AlarmSearch konf., Channel Status lesen, Activity Latch zurücksetzen (offen CRC Channel Access ggf. gibt es da Wissende; Test Single-Channel-Model & DS2407)
- AlarmSearch inkl. Family Code Filter (ändert sich für Temperatur-Sensor nur beim Berechnen; daher per Software nur ein Alarm pro Interval)

was fehlt (was ich aktuell gebrauchen kann):
- DS2423 komplett (locutus count-dev)

hexenmeister

Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

habeIchVergessen

#439
halt nur Software. ich gebe zu, dass die Temperatur-Sensoren im Wesentlichen die DallasTemperature-lib sind. Habe ich für das Grundgerüst verwendet.
DS2406 habe ich anhand der Spec. implementiert (ich hoffe zukünftig schneller an der Kern der dagereichten Information zu gelangen).

Hat/möchte sich jemand mit der Software-Struktur (Architektur ist zu hoch gegriffen) auseinander setzen? Hintergrund ist, dass ich perspektivisch nicht für alle Devices implementieren/testen können werde. Dann ist der Wust an Klassen schon recht verwirrend. Ggf. geht das auch anders/besser. Wenn kein Bedarf besteht, dann spare ich mir wulstige Beschreibungen.

habeIchVergessen

was geht:

  • i2c & gpio (getestet mit GPIO12; GPIO0 hat nicht funktioniert, wenn busmaster vorhanden)
  • parasitärer Modus

    • gpio kurz getestet
    • i2c nur implementiert (scheinbar geht parasitär nur, wenn APU per configure abgeschaltet wird; sonst werden keine Devices im parasitären Modus erkannt)
  • Temperatur-Sensoren (z.B. DS18S20)
    • lesen
    • Alarm konfigurieren
  • Switch-Sensoren (DS2406)
    • Status lesen
    • Alarm konfigurieren & zurücksetzen
  • Counter-Sensoren (DS2423)
    • Status lesen (locutus Geräte benötigt eine separate Stromversorgung; Ports sind 3&4)
  • Alarm Search inkl. Family Code Filter

offen

  • DS2406
    • direktes Lesen und Schreiben (benötige ich aktuell nicht)

HotteFred

Na du gibst ja Vollgas....

Ich verwende einige Temp/Feuchte Platinen von eservice shop.
Diese verwenden einen DS2438.

Wenn du den einbauen könntest, wäre das super.
Sonst würde ich es wie gesagt mal selber versuchen, aber dazu wäre ein dokumentierter Code natürlich toll.

VG
BananaPi mit FHEM, KM50, Velux Raumluftsensor, jede Menge HM-CC-RT-DN, jede Menge 1Wire Zeugs

habeIchVergessen

DS2438 implementiert (ungetestet, da keine Hardware)
- Temperatur lesen + berechnen
- Spannung, Strom + Restkapazität lesen + berechnen (hier wird per Default ein Widerstand von 25 mOhm verwendet; kann per Parameter überschrieben werden)

div. anderer Kram aus der Spec. erst mal ignoriert (z.B. Kalibirierung, Offset verwenden). Hätte gerne eine Rückmeldung vom Test!

ergerd

Hallo habeIchVergessen,

welche DS2482 Library benutzt du? Da scheinen einige im Netz herum zu fliegen. Die ich gefunden habe werfen alle einen Fehler.

Danke und Grüße
Rainer
FHEM auf RasPi 4, CUNO, ZigBee, 1Wire2WLAN, DS2423, C-Control II, Buderus KM200, LaCrosseGateway, PCA301, ConBee II, LuftdatenInfo, OneWireGW, Div. ESPs u. Shellys


hexenmeister

Cool!
Jetzt noch als ESPEasy-Plugin, damit wirklich jeder leicht hinbekommt! *duck-und-weg*  ;D
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

habeIchVergessen

ESPEasy ist nicht meins.
Kann der DS2438 schon auf die Positiv-Liste?

hexenmeister

Zitat von: habeIchVergessen am 03 März 2017, 22:08:38
ESPEasy ist nicht meins.
ESPEasy hat sein Vor- und Nachteile. Aber die Features wie Online-Ersteinrichtung (ohne Flashen zu müssen) und Online-Firmwareupdate sind schon feinen Sachen, vor Allem für Anfänger ;)
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

habeIchVergessen

Die max. Anzahl von 64 Sensoren ist schon hart.
Auch das Einbinden der detektieren Sensoren erscheint fragwürdig.

Ein wenig HTML-Oberfläche + speichern im Flash muss schon sein (z.B. Konfiguration vom DS2406).

Eine Implementierung von WiFi-Basics (SoftAP, OTA, Konfiguration WiFi) habe ich rumliegen. Ist für KeyValueProtocol per UDP ausgelegt.

hexenmeister

Wenn das alles erst mal drin ist, brauchen wir natürlich kein ESPEasy mehr  :)
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy