Homematic Wired - Homebrew Devices

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

Vorheriges Thema - Nächstes Thema

MarkusO

Hi Björn,

die Statusmeldungen sollten eigentlich nur auf der Debug-Schnittstelle gesendet werden. Standardmäßig ist das bei dem Hex-File das "Softserial"-Interface auf den Pins 5/6. Auf dem RS485-Bus (an den Pins 0/1) sollten diese Statuswerte nicht geschickt werden, oder? Wenn das doch so ist, schau ich mir den Code nochmal an - vielleicht hab ich da irgend einen Bug nicht entdeckt.

ZitatWo liegt der Marker der das Device als HBW-LC-Bl4 ausweist? Also, wie erkennt die CCU/LXCCU das Device und wählt die richtige XML-Datei aus? In welcher Datei von den Source-Dateien wird dies markiert bzw. festgelegt? Es muß ja irgendwo die Verknüpfung zwischen der XML-Datei und dem Device beim Anlernen existieren?

In dem Quellcode für das Device wird die Geräte ID fest vergeben:

hmwmodule = new HMWModule(&hmwdevice, &hmwrs485, 0x82);


In dem pm-File wird dann auf die gleiche ID verwiesen. Allerdings nicht im Hex-Format, sondern als Dezimalzahl, daher nicht so schnell zu entdecken (0x82 = 130):

'name' => 'RS485 blind actuator 4-channel',
'type' => 130,
'minFW_version' => 0x0303


ZitatFrage: Wo wird zur Zeit eigentlich nun die Geräte-Seriennummer festgelegt bzw wie erstellt? Geschieht es nun beim Upload des Sketches? Wird sie zB auf Grund der Uploadzeit generiert und ins EEPROM geschrieben? Läßt sie sich anpassen?
Die Geräte-ID wird im EEPROM gespeichert (ganz am Ende, wenn ich mich richtig erinnere). Standardmäßig steht die ID auf 0x42FFFFFF und kann über per "@a" Befehl geändert werden.
Um nach dem Flashen auch ohne diesen Befehl eine neue individuelle ID vergeben zu können, hatte ich für den Rollo-Aktor aber auch eine Funktion eingebaut, die eine ID vergibt, wenn das Device zurückgesetzt wird (Taster 5 sek drücken, loslassen, nochmal 3 sek drücken). Die vergebene ID ergibt sich aus der Zeit zwischen dem Starten und dem Reset. Ich denke, die Wahrscheinlichkeit, dass jemand seine Geräte nach dem Flashen nach exakt der gleichen Zeit (ms) zurück setzt und damit eine ID zweimal vergibt, ist recht gering.

Ich hoffe, das hilft Dir weiter.


Viele Grüße
Markus



MarkusO

Oh, da war schon jemand schneller...

Bromm

Hallo Jungs!

Vielen Dank für Eure Antworten!! Das hilft mir schon einmal sehr weiter! Das mit dem Daten auf den Bus senden muss ich tatsächlich zurücknehmen, das hatte ich erst nach meinem Post realisiert, daß das nur vom Debug kommt. Sorry für die Verwirrung!
Aber das mit der Dezimal-Angabe für das Device ist gut zu wissen, denn darauf ist wirklich nur sehr schwer zu kommen... :-)) Sehr gut, gebe es nun einen neuen Versuch mit der Hoffnung, daß das Device nun korrekt erkannt wird... Werde berichten...

Viele Grüße und nochmals besten Dank für die Hilfe!
Björn

Bromm

Hmm... Habe das im XML-File auf 130 für 0x82 verändert... Das Device wird trotzdem noch nicht korrekt erkannt. Es bleibt beim HMW-Gen
eric HBW0417068 ohne Einstell- und Bedienmöglichkeiten... Auch ein Reset über den Button für eine neue ID änderte nichts, ist bei der alten ID geblieben. Auch komisch. Jetzt mach ich aber erstmal Feierabend...

Viele Grüße!
Björn

Bromm

Kleiner Teilerfolg:
Nun wird der HBW-LC-Bl4 als HBW-LC-Bl4-DR HBW0417068 erkannt. Ich hatte bemerkt, daß es scheinbar irgendwie Schwierigkeiten mit dem Format der XML-Datei gab bzw. beim Speichern scheinbar irgendwas mit der Datei passierte was der CCU anscheinend nicht schmeckte, also Encodierung der Datei oder so. Jedenfalls habe ich nun nochmals eine Original-HM-Datei abgewandelt und nun wird diese zumindest erkannt. Scheinbar sind aber noch nicht alle Daten korrekt angepasst. Folgende Fragen nun:
Der Original-Aktor hat 3 Kanäle (2 Eingangskanäle und 1 Ausgangskanal). Der Homebrew-Aktor ist ja nun ein 4-fach-Aktor. Hat dieser dann nun 12 Kanäle hinterlegt?? So wie ich das gesehen hatte, sind ja keine Eingangstaster definiert wie sie sonst beim Original vorhanden wären... Wäre es nicht sinnvoll diese auch im Homebrew-Device zu haben? Wie ist es bei FHEM geführt? Für wieviele Kanäle ist das Device programmiert? Nur 4? Also pro Rolladen ein Ausgangs-Kanal für die Fahrparameter? Das heißt im Homebrew-Device gibt es keine Eingangskanäle, richtig?

Viele Grüße!!
Björn

Bromm

#230
Weiterer Erfolg!! :-)

Ich habe das XML-File weiterbearbeitet und nun wird der HBW-LC-Bl4 richtig in der CCU/LXCCU dargestellt. Es lassen sich auch Einstellungen vornehmen. Es sind jetzt 4 Ausgangskanäle definiert. Keine Eingänge. Bisher läßt sich nur Kanal 1 bedienen, also rauf, runter und stopp. Aber die anderen 3 Kanäle (2, 3, 4) reagieren nicht. Warum weiß ich nicht. Aber immerhin schon einmal ein Stückchen weiter. :-) Wenn auch das noch zufriedenstellend gelöst ist, dann kann es gerne öffentlich gemacht werden. Wem schicke ich das dann am besten für das GitHub? Thorsten?
Ich nehme an, es laufen unter FHEM alle 4 Kanäle erfolgreich, oder gab es hier auch Probleme?

Viele Grüße!
Björn

PS:
Die Levels werden auch noch nicht korrekt angezeigt... Hmm... Hoffentlich klappt das auch noch.

Thorsten Pferdekaemper

Zitat von: Bromm am 01 April 2015, 15:18:22Wem schicke ich das dann am besten für das GitHub? Thorsten?
Ich denke, eher mal Markus. In meinem Branch gibt es das Device gar nicht. Es wäre auch gut, wenn Du dann die Übersicht im Wiki aktualisieren könntest. ...oder einfach mir sagen, dann mache ich das.

Zitat
Ich nehme an, es laufen unter FHEM alle 4 Kanäle erfolgreich, oder gab es hier auch Probleme?
Die Levels werden auch noch nicht korrekt angezeigt... Hmm... Hoffentlich klappt das auch noch.
Die Implementierung von Markus habe ich nicht ausprobiert, aber ich hatte mir mal was ähnliches zum Testen gebastelt. Im Anhang ist ein XML-File mit 5 Dimmer-Kanälen. (Ich hatte auch mal 99, das geht auch.) Vielleicht kannst Du da was abschauen.
Gruß,
   Thorsten
FUIP

Bromm

Hallo Thorsten!

Danke für das XML-File! Das hilft weiter und ebenfalls beim Erforschen der nötigen Informationen. Prima. Gut, stimmt, das GitHub bzw. der HBW-LC-Bl4-Aktor ist ja Markus Bereich, für das Wiki wäre es natürlich toll, wenn Du das dann eintragen könntest. Noch bin ich aus zeitlichen Gründen nicht weitergekommen, es wird aber natürlich die Tage weiter verfolgt...

Gibt es denn bereits einen Homebrew IO-Aktor bzw. den HMW-IO-12-FM als funktionierende Version? Mag Markus das weiterentwickeln?
Was ist mit dem 8-Tasten-Sensor HBW-Sen-SC8? Funktioniert dieser bei Euch? Ich habe dieses Sketch ausprobiert und dazu die ClickButton.h aus dem Netz geladen, das Sketch spuckt aber Fehler aus...

HBW-Sen-SC8.ino:118:1: error: too many initializers for 'ClickButton [2]'
HBW-Sen-SC8.ino: In function 'void setDefaults()':
HBW-Sen-SC8.ino:147:26: error: 'struct hmw_config_key' has no member named 'inverted'
HBW-Sen-SC8.ino:147:65: error: 'struct hmw_config_key' has no member named 'inverted'
HBW-Sen-SC8.ino:148:26: error: 'struct hmw_config_key' has no member named 'pullup'
HBW-Sen-SC8.ino:148:63: error: 'struct hmw_config_key' has no member named 'pullup'
HBW-Sen-SC8.ino: In member function 'virtual void HMWDevice::readConfig()':
HBW-Sen-SC8.ino:196:64: error: 'struct hmw_config_key' has no member named 'inverted'
HBW-Sen-SC8.ino:196:89: error: 'struct hmw_config_key' has no member named 'pullup'
Fehler beim Kompilieren.

Beste Grüße und ein schönes Osterfest!!
Björn

MarkusO

Hi Björn,
wenn Du ein funktionieres XML-File für den Rollo-Aktor hast, kann ich den gerne bei Github online stellen.

Es gab doch auch mal die Idee, alle Module, die schon einigermaßen funktionieren, zentral zu sammeln. Würde sich dafür nicht der Master-Branch anbieten?
@Thorsten: wer verwaltet den Master-Branch eigentlich? Machst Du das?

ZitatGibt es denn bereits einen Homebrew IO-Aktor bzw. den HMW-IO-12-FM als funktionierende Version? Mag Markus das weiterentwickeln?
Das HMW-IO-12-FM Modul hatte ich nur aus dem Branch von Thorsten kopiert, aber nie wirklich angeschaut... Weil ich für mich kein Universalmodul für In-/Output benötige, sondern ganz konkret erstmal nur Taster einlesen und Relais ansteuern will, hatte ich mich entschieden ein Modul für Eingänge (HBW-Sen-SC8) und ein Modul für die Relaisansteuerung (HBW-LC-Sw8) zu bauen.

Beide Module habe ich auch grob getestet, aber nur mit dem "alten" HM485 Master-Branch von Dirk. Ich werde jetzt in den nächsten Tagen auf die neuere Version von gevoo umsteigen und dann auch meine pm-Files anpassen. Dabei werde ich mir auch nochmal alle Module anschauen - vielleicht finde ich dabei noch ein paar Fehler.

Deine Fehlermeldungen sehen so aus, als würde auf die falsche HMWRegister.h verwiesen. In der aktuellen Datei sind die Parameter "inverted" und "pullup" angelegt und müssten eigentlich auch gefunden werden.


Viele Grüße
Markus

Thorsten Pferdekaemper

Zitat von: MarkusO am 03 April 2015, 15:07:06Es gab doch auch mal die Idee, alle Module, die schon einigermaßen funktionieren, zentral zu sammeln. Würde sich dafür nicht der Master-Branch anbieten?
@Thorsten: wer verwaltet den Master-Branch eigentlich? Machst Du das?
Der master-Branch "gehört" Dirk. Ich kann aber gerne versuchen, das ganze mal in meinem Branch zu sammeln. Allerdings müsste man da auch die Abhängigkeiten analysieren. Ich glaube, es gibt auch Änderungen an der Library, die nicht in meinem Branch sind.

Zitat
Das HMW-IO-12-FM Modul hatte ich nur aus dem Branch von Thorsten kopiert, aber nie wirklich angeschaut...
Das Teil funktioniert ziemlich sicher nicht. Das waren mal meine Anfänge, aber da ich kein Original-Modul hatte war es etwas schwierig, damit weiterzumachen. Es wäre relativ einfach, ein Modul zu basteln, dass ein paar Ausgänge und ein paar Eingänge hat. Das Problem ist das Umschalten. D.h. derselbe "Pin" als Ein- oder Ausgang konfigurieren zu können.

Gruß,
   Thorsten
FUIP

nelzon

Zitat von: Dirk am 19 März 2015, 12:55:51
Der HM485-Daemon ersetzt quasi das HMW-LAN-GW. Damit lässt sich ein einfacher USB-RS485-Adapter als SChnittstelle an FHEM oder auch an der CCU2/LXCCU verwenden.



Verstehe ich das richtig, dass eine HM-LAN-Gateway + RS485-Gateway nicht nötig ist, wenn man einen ganz normalen (ebay) USB-RS485 anschließt?

Mein Projekt ist folgendes.. Ich bin am Neubau und möchte Homematic WIRED implentieren. Banana Pi ist schon vorhanden..mehr noch nicht. Ich werde wahrscheinlich LxCCU verwenden wollen, weil in FHEM anscheinend noch nicht alle Aktoren (hauptsächlich benötige ich erstmal HMW-IO-12-SW7-DR und  HMW-IO-12-Sw14-DR) voll unterstützt werden.

Desweiteren möchte ich 1wire verwenden. Bekommt man das interface zu kaufen? Das hat sich mich noch nicht erschlossen, trotz durchlesen dieses ganzen Threads und der wiki seiten. Ich bin kein löter und Programmierer, kann aber Schaltplan lesen und n config am Computer bearbeiten, wenn gesagt wird was wie wo.

Denn ist noch die frage, ob ich einen 16er Relaiskarte an den Bana anschließen und steuern kann? http://www.ebay.de/itm/16-Kanal-Channel-Relay-12V-Relais-Module-for-Arduino-Raspberry-Pi-Opto-couple-/320935471571

Zumannengefasst möchte ich folgendes:
Software (lxccu oder fhem)auf Banana Pi , 1wire zur Temperaturmessung, RS485 zum anbinden von Tastereingängen und Schaltaktoren.

Kann mir einer helfen Ordnung in mein Projekt zu bringen?? ;)

Dankeschööön

MarkusO

ZitatKann mir einer helfen Ordnung in mein Projekt zu bringen?? ;)
Ich werd's mal versuchen.

ZitatVerstehe ich das richtig, dass eine HM-LAN-Gateway + RS485-Gateway nicht nötig ist, wenn man einen ganz normalen (ebay) USB-RS485 anschließt?
Um Deinen Banana Pi (oder einen Raspberry, oder sonst was) an den RS485-Bus anzuschließen brauchst Du ein Gateway, also ein Modul, dass die Zentrale an den Bus anschließt. Ein solches Gateway kann man entweder über LAN anschließen (wie das HM-LAN-Gateway) oder über USB (wie den einfachen USB-RS485-Stick).

ZitatDesweiteren möchte ich 1wire verwenden. Bekommt man das interface zu kaufen? Das hat sich mich noch nicht erschlossen, trotz durchlesen dieses ganzen Threads und der wiki seiten. Ich bin kein löter und Programmierer, kann aber Schaltplan lesen und n config am Computer bearbeiten, wenn gesagt wird was wie wo.
In diesem Thread geht es darum, Module die das Homematic wired Protokoll verwenden, auf Basis von Arduino selbst zu bauen. Fertig aufgebaut kann man keins davon im Laden kaufen. Es kann aber sein, dass der ein oder andere mal ein paar Platinen zu viel angefertigt hat und man irgendwo ein Board bekommt, dass man nur noch bestücken muss. Ums Löten kommst Du da aber wahrscheinlich nicht herum.

ZitatDenn ist noch die frage, ob ich einen 16er Relaiskarte an den Bana anschließen und steuern kann?
Ohne den Banana Pi genau zu kennen, würde ich davon ausgehen, dass das möglich ist. Dann hätte das Ganze aber nichts mehr mit Homematic zu tun. Bei HMW werden alle Geräte über den Bus mit der Zentrale verbunden. Wenn Du die Relais direkt mit dem BananaPi steuern willst, solltest Du erst schauen, ob sowas von FHEM unterstützt wird.

ZitatZumannengefasst möchte ich folgendes:
Software (lxccu oder fhem)auf Banana Pi , 1wire zur Temperaturmessung, RS485 zum anbinden von Tastereingängen und Schaltaktoren.
Prinzipiell ist das alles kein Problem. Banana Pi mit USB-RS485-Interface und ein paar Homematic wired Geräte ist alles was du brauchst. Geräte für Tastereingänge und Schaltaktoren gibt es natürlich auch fertig zu kaufen, aber das 1wire-Gerät musst Du wahrscheinlich selber löten, oder zumindest am Breadboard zusammen stecken (Homebrew = Eigenbau).

Grüße
Markus

MarkusO

Hallo,

ich habe heute mal das pm-File für den 4fach-Rolloaktor auf die neue HM485-lib von gevoo angepasst. Die Grundfunktionen laufen soweit - Level setzen, Laufzeiten schreiben. Es gibt aber auch noch ein paar Probleme, die ich gerne beheben würde, wo mir aber das Wissen zum original 1fach Aktor fehlt. Vielleicht hat ja jemand das Originalgerät und kann mir weiterhelfen.

Mit was für einem Befehl antwortet das Gerät auf ein Level_Set? Acknowledge oder Info? Geht die Antwort dann nur an die Zentrale zurück oder wird ein Info-Broadcast geschickt?

Befehle, die vom Aktor als Broadcast verschickt werden, sind in FHEM auch im Logfile zu sehen. "Info"-Antworten, die als Antwort auf "Set_level" nur an die Zentrale geschickt werden, sehe ich im Logfile nicht. Es scheint so, als würden diese Botschaften nicht ankommen oder nicht ausgewertet werden. Hat jemand vielleicht einen Auszug aus einem Logfile von dem 1fach Aktor?

Gibt es bei dem 1fach Aktor einen Toggle-Befehl? In FHEM ist so ein Toggle-Befehl implementiert, beim Aufrufen wird allerdings nur 0xC8 verschickt, was dem Zielwert 100 entspricht.

In der Datei 10_HM485.pm wird in Zeile 1667 nach der Bezeichnung "HMW_" geschaut:
$deviceName = ($model ne $modelType) ? $model . $deviceName : 'HMW_' . $model . $deviceName;
Mit der Bezeichnung HBW_LC_Bl4 habe ich dadurch immer Fehlermeldungen bekommen.
@Thorsten: hat das bei Dir mit dem 1-wire funktioniert? Ich habe gesehen, dass dort noch HBW_ in dem pm-File steht.

Viele Grüße
Markus

mago0211

Hallo zusammen,

bin durch Zufall über den Thread gestolpert.

Die selbstgebauten Homematic Wired Devices sehen echt interessant aus. Vor allem Preislich im vergleich zu den Kaufbaren.

Hat eigentlich schon mal jemand ein Modul in ein Hutschienengehäuse eingebaut? Fände ich mal interessant wie so was aussehen könnte bin da immer wenig kreativ was Gehäuseeinbau betrifft.

Gruß
Markus

Thorsten Pferdekaemper

Zitat von: MarkusO am 04 April 2015, 23:37:26In der Datei 10_HM485.pm wird in Zeile 1667 nach der Bezeichnung "HMW_" geschaut:
$deviceName = ($model ne $modelType) ? $model . $deviceName : 'HMW_' . $model . $deviceName;
Mit der Bezeichnung HBW_LC_Bl4 habe ich dadurch immer Fehlermeldungen bekommen.
@Thorsten: hat das bei Dir mit dem 1-wire funktioniert? Ich habe gesehen, dass dort noch HBW_ in dem pm-File steht.
Seltsam. Bei mir hat das bisher immer funktioniert. Ich habe es jetzt aber auch für eine Weile nicht ausprobiert.
Was genau funktioniert denn nicht?
FUIP