Autor Thema: Homematic Wired - Homebrew Devices  (Gelesen 135266 mal)

Offline Thorsten Pferdekaemper

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5490
  • Finger weg von der fhem.cfg
Antw:Homematic Wired - Homebrew Devices
« Antwort #105 am: 18 Juli 2014, 12:32:03 »
Hi,
bei mir funktioniert jetzt Dirks Platine auch mit vier Sensoren. (Siehe Bilder.)
Gruß,
    Thorsten
RasPi
Heizkessel-Steuerung per Arduino und HTTPMOD
und einen Haufen Homematic (Wired)

Offline Dirk

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2093
Antw:Homematic Wired - Homebrew Devices
« Antwort #106 am: 18 Juli 2014, 13:39:45 »
Ganz schön warm bei dir :)

Offline Thorsten Pferdekaemper

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5490
  • Finger weg von der fhem.cfg
Antw:Homematic Wired - Homebrew Devices
« Antwort #107 am: 18 Juli 2014, 14:14:45 »
Die gefühlte Temperatur liegt noch höher und außerdem ist's hier drinnen noch relativ kühl.

Ich habe jetzt unsere Versionen der Firmware zusammengebracht. Die aktuelle Version in meinem Git-Branch enthält jetzt meine neusten Entwicklungen und ist mit dem Sensor-Board kompatibel.
Es gibt außerdem eine Compiler-Direktive (#define DEBUG_UNO), mit der man das ganze auf die Version mit SoftwareSerial zurückschalten kann. Allerdings haben sich die Pins gegenüber meiner alten Version etwas geändert, auch wenn man mit "DEBUG_UNO" übersetzt.
#ifdef DEBUG_UNO
  #define RS485_RXD 5
  #define RS485_TXD 6
  #define LED 13        // Signal-LED
#else
  #define LED 4         // Signal-LED
#endif
#define BUTTON 8            // Das Bedienelement
#define RS485_TXEN 2        // Transmit-Enable

#define ONEWIRE_PIN A3
Ich habe außerdem herausgefunden, dass man den USB-Adapter vom Hardware-UART abstöpseln muss, damit die Platine etwas empfängt. Ansonsten funktioniert nur senden. Keine Ahnung warum...
Gruß,
    Thorsten
RasPi
Heizkessel-Steuerung per Arduino und HTTPMOD
und einen Haufen Homematic (Wired)

Offline Thorsten Pferdekaemper

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5490
  • Finger weg von der fhem.cfg
Antw:Homematic Wired - Homebrew Devices
« Antwort #108 am: 20 Juli 2014, 18:34:33 »
Hi,
es regnet...
Im aktuellen git gibt es folgende Neuigkeiten:
  • Die "E-Message" ist jetzt vollständig implementiert. Das gilt auch für zukünftige Devices, die die Library verwenden. Das ganze ist generisch in der Library implementiert.
  • Gegenüber der Version von vorgestern geht das Senden etwas schneller, da ich zwei delay(1) durch flush() ersetzt habe.
  • Es gibt jetzt auch bei Verwendung von Dirks Platine eine Debug-Ausgabe. Das ganze läuft seriell mit 19200 Baud über Pin 5 (Rx) und 6 (Tx).
  • Das ganze Coding rund um die Debug-Ausgaben ist etwas aufgeräumter.
  • Wenn man über die Einstellungen in der CCU einen Sensor rauswirft, dann wird der entsprechende Kanal relativ bald danach mit "-273,15" angezeigt.
  • Neue Sensoren werden jetzt beim Reset (bzw. Einschalten), Factory Reset und beim kurzen Druck der Taste gesucht. (Vorher war's statt beim Tastendruck beim Senden einer neuen Einstellung von der Zentrale. Das hat aber Probleme gemacht und ist meiner Meinung nach auch nicht besonders sinnvoll.)

Gruß,
   Thorsten
RasPi
Heizkessel-Steuerung per Arduino und HTTPMOD
und einen Haufen Homematic (Wired)

Offline Thorsten Pferdekaemper

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5490
  • Finger weg von der fhem.cfg
Antw:Homematic Wired - Homebrew Devices
« Antwort #109 am: 20 Juli 2014, 20:44:58 »
Hi,
es gibt jetzt auch einen ordentliche Wiki-Eintrag:
http://www.fhemwiki.de/wiki/HWB-1WIRE-TMP10
...es kann sich trotzdem noch so einiges ändern, aber wenn ich's nicht dokumentiere, dann verliere ich selbst so langsam den Überblick.
Gruß,
   Thorsten
RasPi
Heizkessel-Steuerung per Arduino und HTTPMOD
und einen Haufen Homematic (Wired)

Offline ph1959de

  • Sr. Member
  • ****
  • Beiträge: 948
Antw:Homematic Wired - Homebrew Devices
« Antwort #110 am: 21 Juli 2014, 07:52:57 »
Hallo Thorsten,

ich hätte als Bezeichnung HB-1W-TMP10 erwartet ... habe ich das Namensschema im Wiki falsch verstanden?

Peter
[Fhem auf BeagleBone Black (Debian) | FS20, FHT (CUL) | HomeMatic (HMLAN+HMUART) | PCA301 (JeeLink)...]

Offline Thorsten Pferdekaemper

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5490
  • Finger weg von der fhem.cfg
Antw:Homematic Wired - Homebrew Devices
« Antwort #111 am: 21 Juli 2014, 10:43:37 »
ich hätte als Bezeichnung HB-1W-TMP10 erwartet ...
Hi,
da hast Du recht, die Namensgebung ist nicht wirklich richtig. Danke für den Hinweis. Es ist allerdings kein "HB". Eigentlich müsste es sogar so heißen:
     HBW-1W-T10 oder sogar HBW-1W-T10-PCB
(siehe http://www.fhemwiki.de/wiki/HomeMatic_Namen_verstehen)

Ich werde das demnächst noch ändern, komme aber vor übernächster Woche wahrscheilich nicht dazu. Es ist leider mit einer Änderung im Wiki nicht getan.
Gruß,
   Thorsten
RasPi
Heizkessel-Steuerung per Arduino und HTTPMOD
und einen Haufen Homematic (Wired)

MarkusO

  • Gast
Antw:Homematic Wired - Homebrew Devices
« Antwort #112 am: 23 Juli 2014, 22:04:05 »
Hallo zusammen,
hier hat sich in letzter Zeit ja richtig was getan! Mir hat in den letzten Wochen leider etwas die Zeit gefehlt, um mich mit dem Thema zu beschäftigen...
Ich habe allerdings angefangen, mir über einen Bootloader Gedanken zu machen. Für den Fall, dass die Eigenbau-Geräte mal irgendwo im Haus fest eingebaut sein sollten und man doch noch das ein oder andere Update einspielen möchte, könnte ein Bootloader, der den HM485-Bus verwendet, ja nützlich sein.

Meine Idee habe ich hier beschrieben:
https://github.com/kc-GitHub/HM485-Lib/tree/markus/hmwProgrammer
Mich würde Eure Meinung interessieren, ob so ein Bootloader überhaupt Sinn macht und was ihr von dem Konzept haltet.

Beim Bootloader selbst besteht derzeit noch das Problem, dass die ID des Geräts fest im Code implementiert ist, d.h. der Source-Code des Bootloaders müsste für jedes Gerät angepasst werden, um eindeutige IDs zu erhalten. Was haltet Ihr von den folgenden Ideen, um eindeutige IDs zu generieren?
- nachträgliche Vergabe der ID manuell (z.B. mit Befehl über serielle Schnittstelle)
- an jeden Client einem 1-wire Sensor anschließen - die 1-wire Sensoren haben angeblich alle eine eindeutige ID, die vom Client übernommen werden könnte
- generierung einer zufälligen ID, indem das Rauschen eines AD-Kanals ausgenutzt wird
- Zeitabstand auswerten (z.B. vom Reboot bis zum ersten Tastendruck oder dem ersten Empfang einer Busnachricht)
- sonstige Möglichkeiten?

Viele Grüße
Markus

reneFHEM

  • Gast
Antw:Homematic Wired - Homebrew Devices
« Antwort #113 am: 24 Juli 2014, 21:21:55 »
Hallo zusammen,

ich war auch lange Zeit zu beschäftigt um an dem Thema zu arbeiten. Aber ich habe diese Woche auch etwas geschafft. Ich habe ein neues Device HBW-Sec-MDIR-2 (bei mir sollte die Bezeichnung stimmen :-) )angelegt. Das Device soll ein Unterputz-Gerät zur Anschaltung eines MDIR von Jung, Berker oder Gira an den HM485 realisieren. Damit ist es dann möglich einen Bewegungsmelder und sogar auch einen Präsenzmelder zu integrieren. Die Schaltung und die Logik stammt von: http://www.mikrocontroller.net/articles/24V_UP-Einsatz_f%C3%BCr_Bewegungsmelder_von_Jung,_Berker_und_Gira. Die Firmware habe ich für Arduino bereits portiert. Die "richtige" Hardware muss noch angpasst werden. Tests stehen allerdings noch aus, da mir noch ein paar Bauteile fehlen, die ich diese Woche noch bestellen will.

Ich habe noch ein paar architekturelle Verbesserungen gefunden, die ich in einem nächsten Commit beisteuern werde, um doppelten Code zu beseitigen.

@Markus: Mit deinem Bootloaderkonzept könnte man zumindest Entwicklungsseitig ein FW-Update durchführen. Ich glaube ein FW-Update sollte auch von FHEM oder CCU funktionieren. Das ist mir noch nicht klar wie das mit deinem Konzept funktioniert. Die Vergabe der ID über einen Zeitbezug halte ich auch für sinnvoll. Hier sollte aber trotzdem sichergestellt werden, das es keine Dopplungen mit den Seriengeräten gibt. Vielleicht kennt ja jemand den Vergabealgorithmus oder man müsste als Fallback noch die manuelle Vergabe integrieren.

Gruß Rene 

Offline Dirk

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2093
Antw:Homematic Wired - Homebrew Devices
« Antwort #114 am: 25 Juli 2014, 00:07:04 »
Hallo,

der Bootloader zum Updaten über den Bus sollte auf alle Fälle noch kommen.

Die Adresse, die Seriennummer und ggf. sogar den Devicetype würde ich hier gerne im Hexfile des Bootloaders an definierten Adressen mit unterbringen. Vorteil: Man kann die Firmware flashen ohne diese Infos zu überschreiben. Das ist bei den fertigen Devices übrigens auch so implementiert.

Beim Flashen des Bootloaders kann man diese Informationen mit übergeben. So ähnlich mache ich das auch bei der Firmware vom Univeralsensor auch schon. Dort zwar noch nicht im Bootloader, aber das Verfahren währ ähnlich. Die zufällige Vergabe der Daten kann dann auch das "Flash-Tool" übernehmen.
Und da der Bootloader hier sowieso geflasht werden muss, können diese Infos dann hier auch mit rein.

Ein Speichern der Informationen im EEprom ist nicht ganz ungefärlich. Denn die CCU bzw. die Zentrale hat normalerweise die volle Kontrolle über den kompletten EEprom-Speicher eines Gerätes. Ansonsten muss man hier einen bestimmten Speicherbereich speziell schützen.

Gruß
Dirk


reneFHEM

  • Gast
Antw:Homematic Wired - Homebrew Devices
« Antwort #115 am: 25 Juli 2014, 14:22:44 »
Hallo,

Zitat
Die Adresse, die Seriennummer und ggf. sogar den Devicetype würde ich hier gerne im Hexfile des Bootloaders an definierten Adressen mit unterbringen.
Das halte ich auch für gut. Wobei die Seriennummer durchaus auch aus der aktuellen Systemzeit des Rechners generiert werden kann. Für mein neu angelegtes Device brauche ich auch noch einen Devicetype. Kann ich mir da einfach einen definieren oder muss ich irgendwelche Regeln befolgen?

Zitat
So ähnlich mache ich das auch bei der Firmware vom Univeralsensor auch schon.
Ist die Firmware dafür auch auf Arduino portiert ?

Gruß Rene

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 19265
Antw:Homematic Wired - Homebrew Devices
« Antwort #116 am: 25 Juli 2014, 15:03:21 »
wäre hier nicht auch ein i2c mac chip für die serien nummer gut?

gruss
  andre
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline Dirk

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2093
Antw:Homematic Wired - Homebrew Devices
« Antwort #117 am: 25 Juli 2014, 17:19:58 »
wäre hier nicht auch ein i2c mac chip für die serien nummer gut?
Ich finde die Idee nicht so gut.
Siehe hier: http://forum.fhem.de/index.php/topic,20620.msg186635.html#msg186635

Gruß
Dirk

Offline Dirk

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2093
Antw:Homematic Wired - Homebrew Devices
« Antwort #118 am: 25 Juli 2014, 17:49:18 »
Für mein neu angelegtes Device brauche ich auch noch einen Devicetype. Kann ich mir da einfach einen definieren oder muss ich irgendwelche Regeln befolgen?
Regeln sind mir nicht bekannt.
Die RF-Devices haben 2 Bytes als Devicetype. HM-Wired Geräte theoretisch auch, aber hier bin ich mir derzeit nicht so sicher. Hiuer scheint nur ein Byte benutzt zu werden. Das will ich aber noch mal untersuchen.

Für die RF-Devices haben wir hier die ID-Bereiche dokumentiert.
http://www.fhemwiki.de/wiki/Kategorie:HomeBrew

Du kannst ja erstmal eine höheren ID testen.

Gruß
Dirk

Offline Thorsten Pferdekaemper

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5490
  • Finger weg von der fhem.cfg
Antw:Homematic Wired - Homebrew Devices
« Antwort #119 am: 27 Juli 2014, 21:17:48 »
Ein Speichern der Informationen im EEprom ist nicht ganz ungefärlich. Denn die CCU bzw. die Zentrale hat normalerweise die volle Kontrolle über den kompletten EEprom-Speicher eines Gerätes. Ansonsten muss man hier einen bestimmten Speicherbereich speziell schützen.
Im Endeffekt hat die Firmware des Geräts die Kontrolle darüber. Ich könnte relativ einfach die paar Bytes irgendwo reservieren und in der Firmware verhindern, dass sie überschrieben werden. (Auch beim "Factory-Reset.) Für eine CCU würde dieser Bereich dann immer als "leer" (0xFF) erscheinen.
Dazu dann noch einen speziellen "Befehl" und man könnte die Adresse bzw. Seriennummer von außen setzen. Das würde dann sogar über den Bus gehen.
Gruß,
   Thorsten
 
RasPi
Heizkessel-Steuerung per Arduino und HTTPMOD
und einen Haufen Homematic (Wired)

 

decade-submarginal