Arduino Asksin library

Begonnen von trilu, 06 August 2013, 10:02:17

Vorheriges Thema - Nächstes Thema

Apicalis

Zitat von: micky0867 am 05 Juli 2016, 21:16:38
Hallo Martin,

danke dir.
Es kompiliert schonmal, jetzt muss ich "nur" noch die richtigen Stellen für meinen WDS ausfindig machen.

LG
Micky

Hallo Micky, ich hätte höchstes Interesse an beiden Codes die du geschrieben hast um den Wassersensor WDS zu emulieren. Sowohl für die alte als auch für die neue Asksin library da ich grade das gleiche vorhabe.

Ich versuche aktuell die HM_LC_SW1_BA_PCB umzuschreiben... erfolglos wie man an meiner Nachricht merkt.

Hier auf jeden Fall die XML File aus der Homematic CCU die den HM_SEC_WDS1/2 beschreibt http://codebeautify.org/xmlviewer/cbbe3f0e

Wie gesagt, ich würde mich äußerst freuen, wenn du schonmal den Code für die alte Asksin hochladen könntest.

Gruß Martin H.


Apicalis

Hat jemand eine Ahnung vom Sicherheitsschlüssel?

Ich habe mal im HM-LC-SW1-BA-PCB Beispiel der Newasksin Library  in der register.h in Zeile 30 die "Model ID" auf    "/* Model ID          2 byte */  0x00,0x45," geändert um einen HM-SEC-WDS zu emulieren. In meiner Homematic Zentrale wird das Gerät daraufhin erkannt, deklariert und hinzugefügt. Funktion ist natürlich noch nicht gegeben da die falschen Befehle gesendet werden, aber es wird schonmal erkannt.

Ich möchte das ganze jedoch in meine Qivicon einfügen die sich über den Sicherheitsschlüssel beschwert.
Fehlermeldung:
"Das von Ihnen ausgewählte Gerät nutzt eine für das QIVICON System unbekannten Sicherheitsschlüssel!
Bitte wenden Sie sich an den Verkäufer des Gerätes, um den Sicherheitsschlüssel zurückzusetzen und das Gerät mit Ihrer QIVICON Home Base nutzen zu können. Für weitere Informationen klicken Sie bitte auf hilfe."

Weiß jemand was dort eingetragen werden müsste? Ich vermute dass der Sicherheitsschlüssel in der register.h in Zeile 24 "uint8_t HMKEY[16] =" eingefügt werden muss.

micky0867

Zitat von: Apicalis am 06 Juli 2016, 14:07:40
Hallo Micky, ich hätte höchstes Interesse an beiden Codes die du geschrieben hast um den Wassersensor WDS zu emulieren.

Hallo Martin,

das ist aber quick&dirty.
Ich habe die LEDs weggelassen und die Batterieübewachung dürfte auch nicht tun.
Egal, ich hab's mal hochgeladen:
https://github.com/micky0867/HM_SEC_WDS_AskSin

...und dabei gleich noch was über git gelernt ;-)

Ich habe auch Fotos gemacht, muss mal schauen, ob man die hier oder besser auf Github hochlädt.

Jetzt ist erstmal Fussball angesagt  8)
Micky

Dirk

Zitat von: Linef am 28 Juni 2016, 14:24:00
Im Wettersensor-Projekt (hier: https://github.com/kc-GitHub/Wettersensor und hier: https://forum.fhem.de/index.php/topic,20620.0.html) wird die alte AskSin-Lib eingesetzt.
Allerdings nicht die originale, sondern die angepaßte von kc-github.
Hier dort ich ein paar Bugfixes und Optimierungen eingebaut.


Zitat von: Apicalis am 30 Juni 2016, 09:40:29
Hat einer von euch den aktuellen Stand der kc-GitHub library getestet? Ich wollte das 6 Tastenswitch ausprobieren und habe den Asksin Ordner in den library ordner platziert daraufhin hat sich der compiler gemeldet, dass die HM6TastenSwitch.h noch nicht integriert ist. Daraufhin habe ich die genannte Header ebenfalls in den AskSin Library Ordner
Woher stammt die "HM6TastenSwitch.h"? aus der New-Asksin? Das dürfte so einfach nicht funktionieren.
Wenn du einen 6-Fach-Taster bauen willst, kannst du dir auch mal diesen Code ansehen und ggf. modifizieren.
https://github.com/kc-GitHub/1-6Fach-Taster

Hier gibts auch einen Tread dazu:
https://forum.fhem.de/index.php/topic,19657.msg132656.html

Den Code wollte ich später auch mal noch auf newAsksin+AES migrieren.


Zitat von: Apicalis am 07 Juli 2016, 14:04:45
Hat jemand eine Ahnung vom Sicherheitsschlüssel?
In hmkey.h kommt dein 16 Byte langer HM-Key rein. Optimalerweise der Default-Key.
Schau mal in "10_CUL_HM.pm" und suche du dort nach "default key"

Alternativ kannst du dort auch direkt den md5-Hash deines Schlüssels eintragen. Dann muss  HM_DEVICE_AES_KEY_INDEX aber auch mindestens 02 sein.
HM_DEVICE_AES_KEY_INDEX ist der "Schlüsselzähler mal 2". Bei jedem Schlüsseltausch in der Zentrale wird der eins hochgezählt. HM_DEVICE_AES_KEY_INDEX muss dann aber den Schlüsselindex mal 2 enthalten.

Ein funktionierendes Device mit AES-Fähigkeit habe ich hier:
https://github.com/kc-GitHub/MotorControl

Der zugehörtige Tread ist hier:
https://forum.fhem.de/index.php/topic,51766.msg435421.html

Viele Grüße
Dirk

Apicalis

Zitat von: micky0867 am 07 Juli 2016, 18:20:36
Hallo Martin,

das ist aber quick&dirty.
Ich habe die LEDs weggelassen und die Batterieübewachung dürfte auch nicht tun.
Egal, ich hab's mal hochgeladen:
https://github.com/micky0867/HM_SEC_WDS_AskSin

...und dabei gleich noch was über git gelernt ;-)

Ich habe auch Fotos gemacht, muss mal schauen, ob man die hier oder besser auf Github hochlädt.

Jetzt ist erstmal Fussball angesagt  8)
Micky

Welche Arduino IDE Version verwendest du? Auf der 1.6.6 kompiliert es bei mir nicht aufgrund von diversen Syntax fehlern die scheinbar mit der neuen Version zusammen hängen

Apicalis

Mein Fehler, habe nicht realisiert, dass die alte Asksin library ausschließlich den Atmega328p kann. Auf dem Atmega32U4 lässt es sich so nicht kompilieren. Ich hoffe ich kriege das ganze umgeschrieben und würde dir dann die geänderte Version zukommen lassen Micky damit du deinen GitHub eintrag erweitern kannst.

Dietmar63

Hallo zusammen,

ich bin durch Zufall auf die Möglichkeiten gestoßen einen selbst programmierten Arduino mini batteriebetieben zu einem Strom/Gas Zähler aufzubauen.

Beide VerbrauchsZähler sind im Keller - stellt sich das Problem der Übertragung der Werte zur Zentrale die einen CUL mit HM Protokll fährt.

Bennemacs Lösung panstamps zu nehmen habe ich gesehen - scheint gut zu funktioniern.
Ich will praktisch die gleiche Lösung bauen, nur möchte ich die Daten per HM Protokoll übertragen, wenn ich es schaffe mit der ja offensichtlich funktionierenden Schnittstelle asksin, möglichst in der neueren Version - sie scheint mir aufgräumter zu sein.

Mir schwebt vor folgendes umzusetzen:

Der Arduino schläft die meiste Zeit so vor sich hin, wird vielleicht alle 8 Sekunden geweckt und schaut, ob es was zu tun gibt(aufgelaufene Zählerstände nach 15 Minuten als HM-Paket versenden) - parallel horcht der Arduino auf zwei Leitungen, ob sich ein Ereignis am Stromzähler oder am Gaszähler einstellt, wenn ja, dann kurz zählen und wieder hinlegen.
Eventuell noch ein Taster oder PIR, der den Datensammler für x Minute in einen Bereitschaftsmodus wechselt, damit er für die Zentrale ansprechbar wird: sleepmode nicht 8 Sekunden, sondern sleepMode 250ms.

Die Entwicklungsumgebung läuft und ich kann Programme mit NewAskSim übersetzen.
C++ ist nicht so das Problem - löten schon eher, einen nanoCul zu löten hat geklappt.

Es bleibt noch die oben beschriebene Funktionalität in das Protokoll von NewAskSim einzuhängen. Ohne NewAskSim könnte ich fast alles bei Bennemannc oder  StefanStrobel  abkupfern.

Ich habe bisher verstanden, dass ich etwas  bauen muss , dass wie cmBlind, cmDimmer, cmSwitch eingehängt werden muss, oder liege ich falsch.

Das meiste was ich an Beispielen gefunden habe bezog sich  immer auf Sensoren.

Wie baue ich aber ein Gerät wie einen cmImpulsCounter  oder einen cmButton(Umstellung von 8s auf 250ms) - ConfButton scheint mir nicht so für meine Zwecke zu funktionieren, aber vielleicht habe ich es auch nur falsch verstanden.

Wie nutze ich die Interrupts um kurz auf Impulse vom Strom-/Gaszähler.
Wie und in welcher Klasse  versende ich am besten die DatenPakete. Jedesmal die Klasse AS in NewAskSin mit einer neuen send_* Routine zu erweitern, halte ich für nicht so eine gute Idee. Im neuen Klassensystem habe ich noch gar kein Beispiel gefunden(Vielleicht gut versteckt). Gibt es keine allgemeine Funktion der man die zu sendenden Daten einfach übergeben kann.

Kann mir jemand mit Beispielen und Tipps wie man es lösen muss helfen.

Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Dietmar63

Hat niemand Tipps - gute Dokumentation?
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

frank

ich denke, dass du die fw von dirk nehmen könntest, die für den wasserzähler benutzt wird. https://forum.fhem.de/index.php/topic,47676.0.html
ich habe es gerade mal überflogen. hat er wohl noch nicht veröffentlich.
ansonsten nimmst du erst einmal die vom universalsensor und änderst selber.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Dietmar63

#1119
Danke - das Projekt hatte ich noch nicht gesehen.
Scheint grundsätzlich das zu sein was ich auch möchte nur eben für Strom/Gas - Wasser ist nicht so interessant.

Den UniversalSensor würde ich nicht so gern als Grundlage nutzen. Er basiert noch auf AskSin alt. 
Die neue Lib ist wesentlich aufgeräumter und durchdachter.  Dirk hat seine Motorsteuerung daruf aufgebaut:
https://github.com/kc-GitHub/MotorControl

Ich habe die Sourcen schon untersucht - habe einiges verstanden, allerdings sind mir  noch einige Fragen offen.

Ich würde zum Beispiel gern die rote LED des Stromzählers und den Readkontakt des Gaszählers per Interrupt abfragen. Dann müßte man den Arduino nicht alle 250 ms aufwecken, sondern man könnte die Zeit auf 8s ausweiten. 
Die Interrupts sind allerdings  in der Software NewAskSin wg. der configTaste schon belegt, so dass ich keine eigene ISR angeben kann.

Dirk hat das scheinbar für MotorControl in NewAskSin umgebaut.

Es gibt ein #define mit der Bedeutung "EIGENER_ISR_1" .

Kann mir jemand die Bedeutung der Methoden trigger11 trigger40 trigger41 erklären.
Es scheint so zu sein, dass in den Methoden vorgfertigte HM-Nachrichen gefüllt werden. Sehe ich das richtig? Ist man in der Erstellung der Nachrichten völlig frei? die Variablen haben manchmal kryptische Namen so dass es schwer zu verstehen ist, was allgemeingültig für cmModule ist bzw. was speziell für MotorControl gemacht wurde.

Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

kadettilac89

Zitat von: Linef am 06 Mai 2016, 01:13:26
Die Quellen stehen unter https://github.com/LineF/NewAskSin.git im Branch dev zur Verfügung. Das Hauptmodul des Sensors (mit Schaltplan - ist aber ziemlich identisch zum Universalsensor) liegt unter https://github.com/LineF/HM-Sensor.git, ebenfalls im Branch dev.
Ein Sketch ist es nicht, da ich mit dem Atmel Studio entwickle, aber sollte in der Arduino IDE (nach Rename von main.cpp) auch übersetzbar sein.

Viele Grüße,
Martin

Hi LineF,

du hast den Sensor in GitHub mit Schaltplan. Hast du dir auch Platinen gemacht? Hast du Eagle Files die ich verwenden dürfte? Ich möchte mir ggf. Platinen bestellen und müsste dann nicht alles neu erstellen.

Linef

#1121
Hallo kadettilac89,

ich habe jetzt noch die Eagle-Files und ein paar Fotos von meinem Sensor ins git-repo hochgeladen.
Wenn die Sourcen ohne Debug compiliert werden, dann ist der Batterieverbrauch jetzt (soweit absehbar) hervorragend. Wenn er dann auch noch so eingestellt wird, daß er nur alle 8 Sek. aufwacht, dann war jetzt bei mir in den vergangenen 2 Wochen kein Spannungsabfall an den Batterien feststellbar (auf 1/100V gemessen). D.h. die Batterien müßten mehrere Jahre halten...

Die Platinen habe ich mir selber gemacht - einseitig. D.h. es gibt einige Drahtbrücken. Vor der Verwendung bei einem professionellen Platinenhersteller muß das Layout allerdings nochmals kontrolliert werden (Bohrdurchmesser, sonst. Abstände etc).

Gruss,
Martin
fhem auf cubietruck, HM-USB-CFG-2, CUL-V3, 6x HM-CC-RT-DN, 5x HM-SEC-SD, 2x HM-SEC-SCo, 5x HM Eigenbausensoren, AVR-Heizungsgateway

kadettilac89

Zitat von: Linef am 31 Juli 2016, 14:47:58
Hallo kadettilac89,

ich habe jetzt noch die Eagle-Files und ein paar Fotos von meinem Sensor ins git-repo hochgeladen.
Wenn die Sourcen ohne Debug compiliert werden, dann ist der Batterieverbrauch jetzt (soweit absehbar) hervorragend. Wenn er dann auch noch so eingestellt wird, daß er nur alle 8 Sek. aufwacht, dann war jetzt bei mir in den vergangenen 2 Wochen kein Spannungsabfall an den Batterien feststellbar (auf 1/100V gemessen). D.h. die Batterien müßten mehrere Jahre halten...

Die Platinen habe ich mir selber gemacht - einseitig. D.h. es gibt einige Drahtbrücken. Vor der Verwendung bei einem professionellen Platinenhersteller muß das Layout allerdings nochmals kontrolliert werden (Bohrdurchmesser, sonst. Abstände etc).

Gruss,
Martin

Sieht sehr professionell aus. Hilft mir sicher weiter.

Ich hab bei mir die 8sec. schon seit Beginn aktiv. Mein Sensor läuft seit 2 Monaten und Spannung fällt auch nur langsam. Debugging ist noch aktiv, werde ich auch noch ausschalten.

Danke dir!

east

Hallo Dirk,

danke für den Tipp mit der alten Lib bzw. deinem 1-6 Fach Taster. Möchte nach langer Pause wieder was basteln. Hatte jetzt versucht die alte LIb mit Arduino 1.5.0 bzw. 1.5.2 und 1.6.5 zu kompilieren. Allerdings ohne erfolg. Bekomme die willdesten Fehlermeldung von "no such File" . Dies konnte ich beheben, indem ich die Header und Sources in den Arduino-Ordner kopiert habe. Allerdings fängt er jetzt mit anderen Fehlermeldungen an wie zb. "prog_Uint8t" wäre keine bekannte deklaration usw.

Hättest Du ne Idee, die mir weiter helfen könnte.  Kann vielleicht auch an der Version von Arduino liegen. Weiss allerdings nicht welche ich nehmen soll.

Vielen Dank im Voraus.

Dennis

Dietmar63

#1124
Die alte lib scheint mir nicht so aufgeräumt zu sein wie die neue.
Ich will auf der Basis der neuen lib einen Strom und Gaszähler bauen, ähnlich der hier im Forum auf Basis von panstamps beschriebenen Lösungen.

Kompilieren geht auf der neuesten Version der arduino Entwicklungsumgebung unter Linux ganz gut.
Ich versuche ein wenig mehr OO ins Framework zu bringen. Einige Verbesserungen hätte ich schon, aber solange ich noch im Lernmodus bin, ist noch nichts konkret.
Ich habe aber noch lange nicht alles verstanden. Warte auch noch auf Hardware aus Asien. Löt arbeiten mit dem cc1101 stehen auch noch an. 

Als Grundlage verwende ich die Steuerung des Tv-Vorhangs von Dirk.
Er hat wohl noch ein Wasserzähler Projekt in Arbeit.

Die alte lib würde ich nicht mehr verwenden.

Vielleicht können wir uns ja gemeinsam einarbeiten und uns Hilfe bei Dirk und trilu besorgen, wenn wir nicht mehr weiterkommen. Bisher sind meine Fragen eher unbeantwortet geblieben. Ich komme aber auch noch so voran.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm