Arduino Asksin library

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

Vorheriges Thema - Nächstes Thema

daschauher

hi horst,

ich hab mir jetzt welche aus der bucht bestellt.
http://www.ebay.de/itm/301728510301?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT
die sehen genauso aus wie deine, nur in einer kleineren menge und zum selben preis.

vielleicht baue ich die 433er module mal um auf 868. machbar müsste es sein. im moment habe ich aber keine lust dazu.

vielen dank auch noch für deine unterstützung!!

viele grüsse
markus

trilu

umbauen lohnt sich nicht wirklich, da kosten allein die smd bauteile mehr als das modul :-)
hast du nicht noch einen max-fensterkontakt oder irgend ein anderes hm/max device. die funkmodule gehen auch prima, kannst ja wieder zurück bauen, wenn die aus der bucht da sind ....

daschauher

stimmt, das habe ich auch gerade rausgefunden. die module habe ich mir mal auf, vielleicht baue ich mir nen cul für intertechno steckdosen...
naja ich hätte noch so einen fenster drehgriff kontakt von hm. vielleicht nehme ich den auseinander wenn ich es nicht mehr abwarten kann  ;)

viegener

Danke erstmal für die Antworten.  Es hat ein bisschen gedauert, bis ich wieder dazugekommen bin Tests zu machen. Die Verkableung ist inzwischen korrekt (GD00 war an Pin3/Int1 und nicht Pin2).

Zitat von: trilu am 29 September 2015, 16:31:04
Die Lib hat zwei Ableitungen von der CPU Frequenz - Timer und SPI. Die musst Du anpassen und dann sollte es auch mit 16 MHz klappen.

Du schreibst, dass es zwei Stellen gibt, wo man das Timing an 16 MhZ anpassen muss, kannst Du da etwas mehr Hinweise geben (geht es um den Prescaler?) Hast Du vielleicht ein angepasstes Beispiel / .h-File?

Zitat von: trilu am 29 September 2015, 16:31:04
Poste doch mal ein Log des Pairing Versuch.

Gerne:


HM_LC_SW1_BA_PCB
AskSin-Lib V 0.2.2
AS.
PowerMode: 0
initRly: 1
SN.
RV.
HMID: 60 60 60, MAID: 00 00 00

<- 0E 00 80 10 60 60 60 00 00 00 06 01 00 00 00 (1033)
switchRly: 1, 200
<- 0E 01 80 10 60 60 60 00 00 00 06 01 C8 00 00 (18376)
switchRly: 1, 0
<- 0E 02 80 10 60 60 60 00 00 00 06 01 00 00 00 (19538)
switchRly: 1, 200
<- 0E 03 80 10 60 60 60 00 00 00 06 01 C8 00 00 (30630)
switchRly: 1, 0
<- 0E 04 80 10 60 60 60 00 00 00 06 01 00 00 00 (33844)
switchRly: 1, 200
<- 0E 05 80 10 60 60 60 00 00 00 06 01 C8 00 00 (35796)
switchRly: 1, 0
<- 0E 06 80 10 60 60 60 00 00 00 06 01 00 00 00 (36959)
switchRly: 1, 200
<- 0E 07 80 10 60 60 60 00 00 00 06 01 C8 00 00 (38744)
<- 1A 08 80 00 60 60 60 00 00 00 10 00 6C 58 4D 53 37 32 33 34 35 36 37 00 41 01 00 (63939)
switchRly: 1, 0
<- 0E 09 80 10 60 60 60 00 00 00 06 01 00 00 00 (79477)
<- 1A 0A 80 00 60 60 60 00 00 00 10 00 6C 58 4D 53 37 32 33 34 35 36 37 00 41 01 00 (84190)
b> 14 C2 84 5E 37 CF 02 00 00 00 80 00 50 00 00 00 00 00 08 F3 01 (94484)
b> 0F D0 86 10 22 A1 25 00 00 00 0A A8 E1 0E 0D 1F (105947)
b> 0C 9C 86 70 23 0F CC 00 00 00 00 E8 37 (135698)
l> 0E 9C 82 02 23 15 3E 23 0F CC 01 01 00 00 27 (155765)
b> 14 C3 84 5E 37 CF 02 00 00 00 80 00 50 00 00 00 00 00 08 F8 01 (215823)
switchRly: 1, 200
<- 0E 0B 80 10 60 60 60 00 00 00 06 01 C8 00 5A (303391)
switchRly: 1, 0
<- 0E 0C 80 10 60 60 60 00 00 00 06 01 00 00 5A (304742)
switchRly: 1, 200
<- 0E 0D 80 10 60 60 60 00 00 00 06 01 C8 00 5A (305901)
switchRly: 1, 0
<- 0E 0E 80 10 60 60 60 00 00 00 06 01 00 00 5A (309651)
switchRly: 1, 200
<- 0E 0F 80 10 60 60 60 00 00 00 06 01 C8 00 5A (311051)
switchRly: 1, 0
<- 0E 10 80 10 60 60 60 00 00 00 06 01 00 00 5A (312457)
<- 1A 11 80 00 60 60 60 00 00 00 10 00 6C 58 4D 53 37 32 33 34 35 36 37 00 41 01 00 (316919)
l> 0B 9D A2 58 23 0F CC 23 15 3E 00 00 (321326)
b> 14 C4 84 5E 37 CF 02 00 00 00 80 00 50 00 00 00 00 00 08 F8 02 (386496)
b> 0F D2 86 10 22 A1 25 00 00 00 0A A8 E0 0E 17 1F (395470)
b> 0F 62 86 10 2E A7 10 00 00 00 0A A8 E2 0E 07 00 (449957)
l> 0B 9E A2 58 23 0F CC 23 15 3E 00 00 (472818)
l> 0E 9E 82 02 23 15 3E 23 0F CC 01 01 00 00 27 (472952)
l> 0E 9F 82 02 23 15 3E 23 0F CC 01 01 00 00 27 (609993)
b> 0F 63 86 10 2E A7 10 00 00 00 0A A8 E2 0E 07 00 (628354)
b> 14 C6 84 5E 37 CF 02 00 00 00 80 00 50 00 00 00 00 00 08 FE FD (684986)
b> 0F D4 86 10 22 A1 25 00 00 00 0A A8 E1 0E 17 1F (691472)
b> 0F 64 86 10 2E A7 10 00 00 00 0A A8 E3 0E 07 00 (792300)
b> 14 C7 84 5E 37 CF 02 00 00 00 80 00 50 00 00 00 00 00 08 FC FA (812554)
...


OK, ich habe verstanden, dass "<-" vom Modul gesendet wird. Wenn ich richtig vermute heisst "l>" und "b>" dass etwas empfangen wird?
Im Fhem erscheint allerdings nichts und der pairingstatus wird auch nicht zurückgesetzt.
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

viegener

Jauchz, heute gehts plötzlich.

Was habe ich gemacht, ich habe im Code nachgeschaut, dass es über den configbutton einen Reset gibt (Zweimal hintereinander lang drücken). Dabei wird auch in der internen Config einiges zurückgesetzt. Danach funktionierte das Pairing problemlos:

Jetzt kann ich die eigentliche Aufgabe starten  :D

Fazit:
- Die Verdrahtung ist wichtig, wer hätte das gedacht  :D
- Ein Reset nach vergeblichen Versuchen wirkt wunder
- 16Mhz macht keine Anpassungen in der Lib nötig

Danke für die Unterstützung (und natürlich die ganze Library)

Johannes
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Dirk

Hallo Zusammen,

ich habe in den letzten Tage und Wochen die Asksin-Lib um die AES-Fähigkeit erweitert.
Dabei gab es auch einen "kleinen" Umbau, damit die Codegröße im Rahmen bleibt.

Das Ganze ist sicher noch nicht stabil, sollte aber funktionieren.
Damit das Ganze dann Einzug in den Master nehmen kann währ es schön, wenn der Eine oder Andere das Ganze mit testen würde.

Das Ganze ist in der DevAES-Branch zu finden.
das derzeit einzige funktionierende Beispiel ist in "HM-LC-Bl1-FM_AES". Die anderen Examples müssen noch nachgezogen werden.

Viele Grüße
Dirk

daschauher

hi horst,

wollte dir nur eine rückmeldung geben dass heute die 868mhz module angekommen sind. hab gleich mal den pcb sketch drauf geladen und siehe da, alles funtkioniert auf anhieb gleich so wie es soll. mit anlernen oder sonst irgendwas absolut null probleme :-)

vielleicht darf ich noch eine frage stellen zu dem thema eigene sensoren?
klingt vielleicht doof aber ich bin nicht so fit im programmieren, habe aber grundkenntnisse und möchte es lernen. ist deine arbeit schon so weit dass man mit eigenen geräten anfangen kann oder ist das vorerst noch was für absolute vollprofis? ich möchte mir mittels ultraschallsensor den füllstand einer zysterne und die aussentemperatur übermitteln.
ich möchte dir nicht zuviel deiner wertvollen zeit klauen, darum erwarte ich auch bestimmt kein komplettes walktrouth oder so was. bin aber für jeden tipp dankbar. finde ich hier in dem thread infos wie ich vorgehen muss oder kannst du mir nen tipp geben wie ich am besten anfange?

viele grüsse
markus

Dirk

Hallo Marcus,

Zitat von: daschauher am 27 Oktober 2015, 19:40:28
vielleicht darf ich noch eine frage stellen zu dem thema eigene sensoren?
klingt vielleicht doof aber ich bin nicht so fit im programmieren, habe aber grundkenntnisse und möchte es lernen. ist deine arbeit schon so weit dass man mit eigenen geräten anfangen kann oder ist das vorerst noch was für absolute vollprofis?
Aktuell fehlen noch ein paar Sachen bzw. funktionieren noch nicht wieder nachdem wir ein bisschen was umstrukturiert haben.
Daher braucht es im Moment noch etwas Erfahrung vor allem auch mit dem Protokoll.

Zitatich möchte mir mittels ultraschallsensor den füllstand einer zysterne und die aussentemperatur übermitteln.
Dann könnte das was für sich sein:
http://forum.fhem.de/index.php/topic,42850.0.html

Das basiert zwar noch auf der alten Lib, funktioniert aber soweit.
Vor allem der Sensorteil läuft stabil.

Eine Migration auf die neue Lib wird aber noch etwas daurern.

Viele Grüße
Dirk

daschauher

Hallo Dirk,

Danke für die Antwort.

ZitatDann könnte das was für sich sein:
http://forum.fhem.de/index.php/topic,42850.0.html

Das basiert zwar noch auf der alten Lib, funktioniert aber soweit.
Vor allem der Sensorteil läuft stabil.

Ja, das sieht ja ganz vielversprechend aus  :)
Ich gieße zwar nicht mehr so viel, d.h. wirklich interessant wird es dann ab nächsten frühjahr, aber was man hat das hat man.....vermutlich melde ich mich dann mal in diesem anderem beitrag  ;)

viele grüße
markus

Jochen222

Hallo,

ich experimentiere gerade mit dem Beispiel: "HM_LC_SW1_BA_PCB" und versuche damit den entsprechenden Aktor mit 4 Kanälen aufzubauen (HM_LC_SW4_BA_PCB).

Folgendes habe ich in der "register.h" gemacht:

Model ID          2 byte */  0x00,0x6c,   -> gegen ->     Model ID          2 byte */  0x00,0xab,  ersetzt

die Model ID fand ich in der "hm device list.txt"


Mit dieser Änderung bekommen ich schon den richtigen 4-K. Aktor in der CCU2 angezeigt, jedoch nur mit einem Kanal.

Daraufhin noch einige Änderungen, die jedoch an der Stelle nichts gebraucht haben (nach jedem Versuch habe ich das Gerät abgelernt und neu angelernt):

cmSwitch cmSwitch[1];   ->   cmSwitch cmSwitch[4];                                                 // create instances of channel module

/* Device Info       3 byte */  0x41,0x04,0x00,                     // describes device, not completely clear yet. includes amount of channels
-> ursprünglich 0x41, 0x01, 0x000 (vermute mal in der  0x01 steckt die Anzahl der Schaltkanäle


hier muss sicher noch etwas erweitert werden, nur woher bekomme ich die Info wie das beim 4-fach Schalter aussieht:
//- channel device list table --------------------------------------------------------------------------------------------
EE::s_cnlTbl cnlTbl[] = {
   // cnl, lst, sIdx, sLen, pAddr, hidden
   { 0, 0, 0x00,  6, 0x000f, 0, },
   { 1, 1, 0x00,  0, 0x0000, 0, },
   { 1, 3, 0x06, 22, 0x0015, 0, },
};  // 21 byte

und hier:

    // register user modules
    cmSwitch[0].regInHM(1, 3, &hm);                                    // register user module
    cmSwitch[0].config(&initRly, &switchRly);                          // configure user module


Grüße,
Jochen













trilu

Hi Jochen,

Du bist schon auf dem richtigen Weg.

Über die Model ID wird innerhalb der CCU das richtige XML File gezogen.

Über ein Byte in der Device Info steuert die CCU bei manchen Geräten die Anzahl der Kanäle.
# 23:0 0.4, means first four bit of byte 23 reflecting the amount of channels.

Der Channel Table ist das zentrale Element für die Lib, hier werden die Verweise auf Kanäle und Listen gesteuert. Für einen Vierfach Aktor sieht der Channel Table etwa so aus:
   EE::s_cnlTbl cnlTbl[] = {
      // cnl, lst, sIdx, sLen, pAddr,  hidden
      {  0,   0,   0x00,  6,   0x0020, 0, },
      {  1,   1,   0x06,  1,   0x0026, 0, },
      {  1,   3,   0x07, 22,   0x0027, 0, },
      {  2,   1,   0x06,  1,   0x00ab, 0, },
      {  2,   3,   0x07, 22,   0x00ac, 0, },
      {  3,   1,   0x06,  1,   0x0130, 0, },
      {  3,   3,   0x07, 22,   0x0131, 0, },
      {  4,   1,   0x06,  1,   0x01b5, 0, },
      {  4,   3,   0x07, 22,   0x01b6, 0, },
   }; // 63 byte


Die nötigen Register für den Aktor würden so aus sehen
   const uint8_t cnlAddr[] PROGMEM = {
      // channel: 0, list: 0
      0x02,0x0a,0x0b,0x0c,0x12,0x18,
      // channel: 1, list: 1
      0x08,
      // channel: 1, list: 3
      0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,
   }; // 29 byte


Dazu braucht man natürlich noch einen Speicherbereich für die Peer der 4 Kanäle reflektiert
   EE::s_peerTbl peerTbl[] = {
      // cnl, pMax, pAddr;
      { 1, 6, 0x023a, },
      { 2, 6, 0x0252, },
      { 3, 6, 0x026a, },
      { 4, 6, 0x0282, },
   }; // 16 byte


Und zu guter Letzt muss man der Lib sagen, wieviele Kanäle das Device insgesamt hat und wo diese Infos zu finden sind
   /*
   * Device definition table
   * Parameter: amount of user channel(s), amount of lists,
   * pointer to device identification string and pointer to the channel table
   */
   EE::s_devDef devDef = {
      4, 9, devIdnt, cnlAddr,
   }; // 6 byte

   /*
   * module registrar
   * size table to register and access channel modules
   */
   RG::s_modTable modTbl[4];


So sollte es klappen...


Konfiguriert werden die Kanäle dann wie folgt
   /**
   * @brief First time and regular start functions
   */
   void everyTimeStart(void) {
      /*
      * Place here everything which should be done on each start or reset of the device.
      * Typical use case are loading default values or user class configurations.
      */

      // init the homematic framework
      hm.confButton.config(2, CONFIG_KEY_PCIE, CONFIG_KEY_INT);           // configure the config button, mode, pci byte and pci bit
      hm.ld.init(2, &hm);                                                 // set the led
      hm.ld.set(welcome);                                                 // show something
      hm.bt.set(30, 3600000);                                             // set battery check, internal, 2.7 reference, measurement each hour
      hm.pw.setMode(0);                                                   // set power management mode

      // register user modules
      cmSwitch[3].regInHM(1, 3, &hm);                                   // register user module
      cmSwitch[3].config(&initRly, &switchRly);                         // configure user module

      cmSwitch[1].regInHM(2, 3, &hm);                                   // register user module
      cmSwitch[1].config(&initRly, &switchRly);                         // configure user module

      cmSwitch[2].regInHM(3, 3, &hm);                                   // register user module
      cmSwitch[2].config(&initRly, &switchRly);                         // configure user module

      cmSwitch[0].regInHM(4, 3, &hm);                                   // register user module
      cmSwitch[0].config(&initRly, &switchRly);                         // configure user module

   }

Wie Du siehst, jeder der Switch Module verzweigt in die selben Funktionen zur Initialisierung der Pins oder zum Ausführen der Schaltfunktionen.
In die Init und Schaltfunktion wird eine Kanalkennung übergeben...
   cmSwitch cmSwitch[4];                                                // create instances of channel module
   extern void initRly(uint8_t channel);                                // declare function to jump in
   extern void switchRly(uint8_t channel, uint8_t status);              // declare function to jump in


Viele Grüße
Horst

MBHG

Hi,

ich habe einen Arduino 328p und einen CC1101 RF1100SE und exakt das gleiche Problem wie "daschauher". Ich habe zwei Tage gebraucht um soweit zu kommen.


HM_LC_SW1_BA_PCB
AskSin-Lib V 0.2.2
AS.
PowerMode: 0
initRly: 1

....
CC.
12...................................3 - ready
SN.
RV.
HMID: 58 23 FF, MAID: 00 00 00

<- 0E76
<- 0E 00 80 10 58 23 FF 00 00 00 06 01 00 00 00 (1938)
<- 1A77
<- 1A 01 80 00 58 23 FF 00 00 00 10 00 6C 58 4D 53 31 32 33 34 35 36 37 00 41 01 00 (7670)


Auf der FHEM Seite habe ich denselben CC1101 und einen Arduino Nano als NanoCul. Diesen habe ich auf 868MHZ eingestellt.

Hat mir jemand einen Tipp?

Lieben Dank


-----------------------------------------------------------
https://smarthome.family.blog Debian Linux, NanoCUL 868, Signalduino, 4x HM-SW4, 11x HM Asksin Unisensor, NodeMCU ESP8266, RCS 1000 N Comfort, Magic Home, Rauchmelder PT2262, Babble

daschauher

Hallo MBHG,

ich habe mir neue bestellt welche für 868mhz ausgelegt sind. Dann hat es auf Anhieb geklappt.

Viele Grüße

MBHG

Hi Daschauher,


Was  bei mir mit dem Uno auch nicht geht sind die klassischen Beispiele aus der rcswitch library. Ich vermute mal, dass diese version des uno mit diesem speziellen cc1101 nicht will, obwohl der nano mit dem cc1101 kann.

Vielleicht bau ich mal nen level shifter dazwischen bis der andere cc1101 kommt.

Lieben dank

Mb
-----------------------------------------------------------
https://smarthome.family.blog Debian Linux, NanoCUL 868, Signalduino, 4x HM-SW4, 11x HM Asksin Unisensor, NodeMCU ESP8266, RCS 1000 N Comfort, Magic Home, Rauchmelder PT2262, Babble

MBHG

#959
Hallo,

update: nach viel viel hin und herprobieren, hab ich nochmal die newasksin library geladen und manuell

1A 01 80 00 58 23 FF 00 00 00 10 00 6C 58 4D 53 31 32 33 34 35 36 37 00 41 01 00

gesendet. Und siehe da ich empfange ihn in dem logfile von fhem:

2015.11.15 18:27:13 4: CUL_Parse: CUL_0 A 1A 01 8000 5823FF 000000 10006C584D533132333435363700410100D4 -96
2015.11.15 18:27:13 2: CUL_HM Unknown device HM_5823FF is now defined
2015.11.15 18:27:13 2: autocreate: define HM_5823FF CUL_HM 5823FF


Momentan kommt im ersten Augenblick noch nichts zurück auf das Modul, aber dann eine Nachricht im Nachgang

<- 0E76
<- 0E 00 80 10 58 23 FF 00 00 00 06 01 00 00 00 (1938)
<- 1A77
<- 1A 01 80 00 58 23 FF 00 00 00 10 00 6C 58 4D 53 31 32 33 34 35 36 37 00 41 01 00 (7953)
15 BE 81 14 34 3C 3C FE D5 F7 43 0F 54 04 B2 40 CD 02 28 BC 18 1A
l> 15 C8 1B 49 C4 2C 24 E6 0F 46 90 10 BF 34 52 CE D1 AB F6 B8 80 01 (282278)



Wenn ich in fhem das angelegte Device einen on und off Befehl sende, kommt er in der Regel an, es wird aber kein ACK zurückgesandt.



Gruss
-----------------------------------------------------------
https://smarthome.family.blog Debian Linux, NanoCUL 868, Signalduino, 4x HM-SW4, 11x HM Asksin Unisensor, NodeMCU ESP8266, RCS 1000 N Comfort, Magic Home, Rauchmelder PT2262, Babble