Homematic Wired - Homebrew Devices

Begonnen von Thorsten Pferdekaemper, 27 April 2014, 00:13:17

Vorheriges Thema - Nächstes Thema

Dirk

Zitat von: stephan-221 am 28 Mai 2014, 07:58:46
Ich hatte das gleiche Problem, dass die CCU keine Geräte gefunden hat.
Ich schaue mir das noch mal an. Welche Version der CCU auf dem RPI benutzt ihr?
lxccu?

ZitatEin 0x44 ist in Deiner Doku nicht aufgeführt. Vielleicht fehlt da irgendwo was?
Vielleicht ein Teil der Komunikation CCU -> HMW-LAN. Auf Busseite kenne ich 0x44 zumindest nicht.

ZitatIrgendwas scheint die CCU schon zu empfangen, da als Status ja "verbunden" angezeigt wird.
Das ist die Verbindung von CCU zum HM485d

Zitat...oder macht das der Daemon selbst?
Ja. Das Discovery macht der HM485d bzw. auch ein HMW-LAN-GW selber.
Es werden "nur" die gefundenen Geräte an die CCU gemeldet.

Gruß
Dirk

Thorsten Pferdekaemper

Zitat von: Dirk am 28 Mai 2014, 10:28:12
Ich schaue mir das noch mal an. Welche Version der CCU auf dem RPI benutzt ihr?
lxccu?
Ja.
FUIP

Franz74

Hallo Dirk, Thorsten,

2 Briefe sind unterwegs...

LG

Franz

Thorsten Pferdekaemper

Hi,
Jetzt klappt's auch mit der CCU2!
Die neuste Version im git wird von einer CCU2 als Original HMW-LC-Sw2-DR erkannt. Dazu muss man eine Taste drücken (also Pin 5 oder 6 auf GND ziehen), da der Discovery Mode noch nicht implementiert ist. Das liegt im Wesentlichen daran, dass bei meiner CCU (lxccu auf RPi) Discovery nicht funktioniert, auch nicht mit Original-HMW Geräten.
Das Teil wird dann erkannt und man kann auch verschiedene Dinge damit tun:

  • Tastendrücke werden von der CCU erkannt.
  • Die Schaltausgänge können von der CCU geschaltet werden (Pin 7 und 8 ).
  • Man kann die Eingänge sperren.
  • Man kann die Dauer für einen langen Tastendruck setzen.
Direkte Verknüpfungen (Peering) gehen leider noch nicht, nur Verknüpfungen über die Zentrale funktionieren bisher.

Ein kleines Problem hatte ich beim Pairing mit den "E" und "e" Messages. Wenn die CCU ein Gerät erkennt, dann schickt sie eine E-Message und erwartet anscheinend eine "e"-Message zurück. Ich habe keine Ahnung, was die Daten bedeuten und sende immer konstant das zurück, was mein Original-Aktor auch schickt. (Das war bisher immer 00 00 10 1F 00 00 00 00 00 60 00.)

@Franz: Dein Temperatursensor ist angekommen und ich habe auch schon einen kleinen Test-Sketch, der auch funktioniert. ...allerdings noch nicht als HMW-Device.

Gruß,
    Thorsten

FUIP

Thorsten Pferdekaemper

Hi,
ich habe jetzt im git ein bisschen umstrukturiert. Es gibt jetzt Verzeichnisse für jedes Device. Ich habe auch ein paar Readme-Dateien spendiert.
Außerdem habe ich die erste Version eines HMW-Geräts, das die durch einen 1-Wire-Sensor gemessene Temperatur in einer CCU anzeigen kann. (Siehe Anhänge.) Das Teil erscheint als HWB-ONEWIRE, device type 129 (0x81). Dafür habe ich auch eine XML-Datei gebastelt, die man auf die CCU kopieren muss (/firmware/hs485types). Das Device reagiert nicht auf Discovery, aber es schickt alle 30 Sekunden die Temperatur und eine Announce-Message. Dadurch erkennt die CCU das Device automatisch, auch ohne Discovery.
Momentan gehen leider nur positive Temperaturen und auch nur genau ein Sensor, aber das wird noch besser. (Falls die CCU überhaupt negative Zahlen kennt...)
In FHEM dürfte das Ding nicht funktionieren (außer vielleicht per set RAW), da die FHEM-Integration noch nicht mit den XMLs funktioniert.
Gruß,
   Thorsten



FUIP

Franz74

Hallo Thorsten,

Wow du bist der hit!

1-Wire am HM Wired Bus, genial!

Jetzt musst du nur noch einen Busmaster im Arduino Teil erstellen welcher eine XML mit den am 1-Wire bus befindlichen Geräten erstellt und diese irgendwie in die ccu über tragen...

LG

Franz

Gesendet von meinem Nexus 4 mit Tapatalk


Thorsten Pferdekaemper

Zitat von: Franz74 am 09 Juni 2014, 11:37:57Wow du bist der hit!
Danke.
ZitatJetzt musst du nur noch einen Busmaster im Arduino Teil erstellen welcher eine XML mit den am 1-Wire bus befindlichen Geräten erstellt und diese irgendwie in die ccu über tragen...
Keine Ahnung, wie das gehen soll. Ich denke nicht, dass wir das über RS485 schaffen können. Außerdem müsste man dann jedem Gerät einen eigenen Device Type geben. ...und das Übertragen müsste vor dem Pairing stattfinden.
Mein Plan ist momentan der: Das Device bekommt eine gewisse Anzahl von Analog-Channels, die dem entspricht, was an Sensoren maximal sinnvoll ist. (10? 25?) Beim Einschalten (setup()) wird der 1-Wire-Bus gescannt. Die gefundenen Adressen werden dann auf die ersten Channels gemappt. Z.B. wenn 3 Sensoren gefunden werden, dann bleiben eben die Channels 4 bis 10 leer, zeigen also immer 0.00 an.
Um das ganze etwas stabiler zu machen, könnte ich auch die gefundenen Adressen ins EEPROM schreiben. Dann würde die Zuordnung stabil bleiben, auch wenn mal ein Sensor ausfällt. Nur neu gefundene würden dann hinzugefügt werden.
Als kleines Extra könnte ich dann auch gleich die restlichen Channels von hinten mit Analog-Ports "auffüllen" und die restlichen Pins als "Key" definieren. Dann hätte man tatsächlich ein recht flexibles Device.
Irgendwie scheint es auch zu gehen, Channels flexibel zu definieren. Z.B. gibt es HMW-Devices, bei denen man Kanäle auf Input oder Output umschalten kann. Außerdem Eingänge, bei denen man Digital oder Analog wählen kann. Vielleicht kann man das mit den Eigenschaften der gefundenen Sensoren verbinden. Der CCU könnte man vorspielen, dass das ganz normale EEPROM-Einträge sind, aber die Werte würden dann tatsächlich vom 1-Wire-Bus ermittelt.
...aber das müsste sich Dirk mal ansehen, da mir nicht klar ist, was mit den XMLs so alles geht.
Gruß,
   Thorsten
FUIP

Dirk

Zitat von: Thorsten Pferdekaemper am 08 Juni 2014, 22:48:27
Außerdem habe ich die erste Version eines HMW-Geräts, das die durch einen 1-Wire-Sensor gemessene Temperatur in einer CCU anzeigen kann.
Cool. Da hast du ja einiges geschafft.

Zitat von: Franz74 am 09 Juni 2014, 11:37:57
Jetzt musst du nur noch einen Busmaster im Arduino Teil erstellen welcher eine XML mit den am 1-Wire bus befindlichen Geräten erstellt und diese irgendwie in die ccu über tragen...
Ich glaube das braucht man nicht mal.
Es muss für jeden Kanal lediglich ein Typ eingestellt werden.
Also nehmen wir an ein 1-Wire Busmaster der 7 Kanäle zur Verfügung stellt kann an Kanal 1-7 entweder ein Temperaturwert, ein Counter oder was auch immer anzeigen.
Das wird dann im XML definiert.

Zitat von: Thorsten Pferdekaemper am 09 Juni 2014, 12:06:54
Mein Plan ist momentan der: Das Device bekommt eine gewisse Anzahl von Analog-Channels, die dem entspricht, was an Sensoren maximal sinnvoll ist. (10? 25?) Beim Einschalten (setup()) wird der 1-Wire-Bus gescannt. Die gefundenen Adressen werden dann auf die ersten Channels gemappt.
So hätte ich mir das auch vorgestellt.
Allerdings nicht nur Analog, sondern Kanäle mit der entsprechenden Funktion.

ZitatUm das ganze etwas stabiler zu machen, könnte ich auch die gefundenen Adressen ins EEPROM schreiben. Dann würde die Zuordnung stabil bleiben, auch wenn mal ein Sensor ausfällt. Nur neu gefundene würden dann hinzugefügt werden.
Das sollte auf alle Fälle so sein.
Ggf. bekommt der Sensor noch Befehle um den Scan zu starten bzw. um einzelne Adresen zu löschen o.Ä.

Gruß
Dirk

Thorsten Pferdekaemper

#83
Zitat von: Dirk am 09 Juni 2014, 19:09:16Also nehmen wir an ein 1-Wire Busmaster der 7 Kanäle zur Verfügung stellt kann an Kanal 1-7 entweder ein Temperaturwert, ein Counter oder was auch immer anzeigen.
Das wird dann im XML definiert.
Ich nehme mal an, Du meinst nicht, dass es für jede Variante ein eigenes XML geben soll. Oder?
Zitat
So hätte ich mir das auch vorgestellt.
Allerdings nicht nur Analog, sondern Kanäle mit der entsprechenden Funktion.
Das sollte auf alle Fälle so sein.
Mach mir mal so ein flexibles XML. Ich versuche dann, den Sketch dazu zu basteln. (...auch wenn ich nur den einen Sensor habe.)
ZitatGgf. bekommt der Sensor noch Befehle um den Scan zu starten bzw. um einzelne Adresen zu löschen o.Ä.
...oder zumindest den "!"-Befehl.

Gruß,
    Thorsten

EDIT: Das mit dem "!"-Befehl ist natürlich Quatsch.
FUIP

Thorsten Pferdekaemper

So, die git-Version von heute hat mal wieder ein paar Neuerungen:

  • Die Temperaturen werden jetzt etwas schöner dargestellt und es gehen auch negative Temperaturen (siehe Anhang).
  • Der "S"-Befehl funktioniert jetzt richtig. Die CCU (und auch FHEM) kann damit Sensorwerte abfragen und muss nicht warten, bis das Device von sich aus was schickt.
  • Es gibt jetzt 10 Channels (von 1 bis 10, nicht mehr ab 21). Beim Start (Reset) werden alle auf dem 1-Wire-Bus gefundenen Sensoren diesen 10 Channels zugeordnet (mehr als 10 gehen nicht). Wenn weniger als 10 Sensoren am Bus hängen, dann liefern die "leeren" Channels immer -273.15 °C.
  • Die Temperatur hat jetzt zwei Nachkommastellen. Sonst hätte ich die -273.15 nicht so schön hinbekommen...
Ich konnte das nicht mit mehreren Sensoren testen, da ich nur einen habe.
Außerdem werden die Sensor-Adressen noch nicht ins EEPROM geschrieben. Es kann also nicht garantiert werden, dass die Zuordnung von Sensor zu Channel konstant bleibt. Das soll aber auch noch kommen.

Es wäre ganz nett, wenn das Ding noch jemand ausprobieren könnte.
Ich wäre auch daran interessiert, wenn jemand mal die "E" und "e" Messages beim Pairen an die CCU von verschiedenen Devices aufzeichnen könnte. Momentan mache ich einfach das nach, was ich bei meiner CCU gesehen habe, aber das muss ja nicht immer genau so sein.

Gruß,
   Thorsten
FUIP

Franz74

Hallo Thorsten,

ich habe die Sensoren inzwischen noch günstiger gefunden und zwar hier:
http://www.ebay.at/itm/5pcs-DS18B20-Waterproof-Digital-Thermal-Probe-Thermal-Sensor-18B20-for-Arduino-/231246952629?pt=Mess_Pr%C3%BCftechnik&hash=item35d76478b5

Der eine den ich dir gesendet habe kommt von dx.com, das dauert auf jeden Fall 3 Wochen bis eine Lieferung von dort Versandkostenfrei bei dir eintrifft...

Ich bin gerade dabei mir eine Platine zu "besorgen" und dann werde ich deine SW natürlich testen!

LG

Franz

Thorsten Pferdekaemper

Hi,
ich habe mir jetzt so ein 5er-Bündel bestellt. Das scheint aber auch mindestens zwei Wochen zu dauern. (Schicken die den Kram direkt aus China? Vielleicht sollte ich gleich mal 1000 bestellen und dann weiterverkaufen...)
Es gibt ja nicht nur Temperatursensoren. Was sollte denn sonst noch gehen?
Gruß,
   Thorsten
FUIP

Franz74

Hallo Thorsten,

ich habe ein Counter Modul von hier:
http://www.eservice-online.de/1-Wire-Bus/

Die haben aber auch noch andere Aktoren (Rolladen usw...)

Oder du baust dir ein 1-Wire IO Modul mit einer Platine aus dem Nachbarthread hier:
http://forum.fhem.de/index.php?topic=22045.0

LG

Franz

Thorsten Pferdekaemper

Mmm...
Das ist mir momentan etwas zu teuer (Counter Modul) bzw. zu viel Gebastel für etwas, was ich momentan gar nicht brauche.
Ich würde sagen, ich mache erstmal mit den Temperatursensoren weiter. Wenn dann jemand konkret was anderes anschließen will, dann können wir das nach und nach einbauen.
Gruß,
   Thorsten
FUIP

Franz74

Hallo Thorsten,

sobald ich ein Platine habe werde ich gerne das Counter Modul Testen, aber das wichtigste hast du ja schon gemacht, die Temperaturmessung! Es gibt nichts auf dem Markt was so Genau und vor allem  Günstig Temperaturen Messen kann wie 1-Wire. Alles andere ist nur "Beifang"!

Die I/O's machen nur sinn wenn du z.B. deine Fenster / Türkontakte dezentral also z.B. pro Raum in eine Dose führst und dort mit dem 1-Wire Bus Kabel durchgehst, alles weitere ist gleich Teuer bzw. hat keinen Vorteil zum HM Wired Bus (außer vielleicht ein LED Dimmer ;-) )

Vielen Dank für deinen "Einsatz"!

LG

Franz