Arduino Asksin library

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

Vorheriges Thema - Nächstes Thema

east

Hallo,

bin noch ziemlich frisch unterwegs in Sachen HM. Habe ein Boardlayout entwickelt. Das Board wird mit jeweils einem HM-MOD-RE8 und einem HM-MOD-EM8, sowie einem Genuino Micro bestückt.

Habe jetzt dieses Projekt verfolgt. Es wäre sehr Interessant, da ich mir den Sender sowie den Empfänger sparen könnte.

Jetzt zu meiner Frage, wäre es möglich, die Library für einen Sender und Empfänger zeitgleich zu nutzen?

Wäre euch sehr dankbar für ein paar tipps. Habe bisher nur in C# Erfahrungen. Benutze Atmel Studio mit Visual Micro (Arduino IDE).

Grüße,

East

viegener

Zitat von: east am 04 Januar 2016, 13:40:27
Hallo,

bin noch ziemlich frisch unterwegs in Sachen HM. Habe ein Boardlayout entwickelt. Das Board wird mit jeweils einem HM-MOD-RE8 und einem HM-MOD-EM8, sowie einem Genuino Micro bestückt.

Habe jetzt dieses Projekt verfolgt. Es wäre sehr Interessant, da ich mir den Sender sowie den Empfänger sparen könnte.

Jetzt zu meiner Frage, wäre es möglich, die Library für einen Sender und Empfänger zeitgleich zu nutzen?

Wäre euch sehr dankbar für ein paar tipps. Habe bisher nur in C# Erfahrungen. Benutze Atmel Studio mit Visual Micro (Arduino IDE).

Grüße,

East

Bin jetzt nicht ganz sicher, was du meinst?
Für hm ist eigentlich immer ein sender und ein empfänger nötig, da hm bidirektional arbeitet und jede sendung rückbestätigt wird.
Wenn du meinst, ob ein transceivermodul sich selbst kommandos senden kann, dann vermute ich ohne jetzt recherchiert zu haben, dass das nicht geht.

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

east

#977
Nein. Nein. Schon richtig. Ich meine, die sketche die der NewAskin beiliegen sind alle samt als Empfangsmodule ausgelegt. Gibt es die möglichkeit, ein paar (4 Fach) Ausgänge die als Empfänger bspw. HM-SW4 und ein paar andere als Eingänge zum senden zu benutzen. Oder sieht das die Library nicht vor?

Weiter habe ich ein bischen in der Library versucht zu verstehen wie die Channels für die Ausgänge erweitert werden könnten, habe dazu auch die Threads hier versucht nachzuvollziehen. Was ich nicht ganz verstehe, ist das "void switchRly(uint8_t channel, uint8_t status)" in der Register.h deklariert und in der .ino die Funktion geschrieben wird. Allerdings sehe ich nicht wo diese Funktion aufgerufen wird. Vielleicht liegt das daran das ich mich mit Klassen(C++) noch nicht so auskenne. Bisher habe ich in C# nur mit Pointern gearbeitet.

Grüße,

Dennis

viegener

Zitat von: east am 05 Januar 2016, 08:55:14
Nein. Nein. Schon richtig. Ich meine, die sketche die der NewAskin beiliegen sind alle samt als Empfangsmodule ausgelegt. Gibt es die möglichkeit, ein paar (4 Fach) Ausgänge die als Empfänger bspw. HM-SW4 und ein paar andere als Eingänge zum senden zu benutzen. Oder sieht das die Library nicht vor?

Weiter habe ich ein bischen in der Library versucht zu verstehen wie die Channels für die Ausgänge erweitert werden könnten, habe dazu auch die Threads hier versucht nachzuvollziehen. Was ich nicht ganz verstehe, ist das "void switchRly(uint8_t channel, uint8_t status)" in der Register.h deklariert und in der .ino die Funktion geschrieben wird. Allerdings sehe ich nicht wo diese Funktion aufgerufen wird. Vielleicht liegt das daran das ich mich mit Klassen(C++) noch nicht so auskenne. Bisher habe ich in C# nur mit Pointern gearbeitet.

Grüße,

Dennis

Ich bin nachwievor nicht sicher, was du mit empfangsmodulen. Die beispiele umfassen einen aktor (dimmer) aber auch einen "sensor" also eine fernbedienung, die einen aktor auslösen kann.

Switchrly wird in der konfiguration des channels als funktionspointer mitgegeben und dann wird nicht die benannte funktion sondern der pointer aufgerufen. Die übergabe passiert in der initialisierung des systems / setups. Du findest in der lib keine benutzung von switchrly das wäre auch falsch, denn beim dimmer wird eine andere funktion aufgerufen und bei mir nochmal eine andere.

Aber ich gebe zu die lib ist etwas unübersichtlich und ich habe bisher nur einen groben überblick.
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

east

#979
Achso. Vielen Dank für die Hilfe. Wenn ich das jetzt richtig verstanden habe. Könnte ich einen 4 Kanal Aktor im Programm parallel mit einem Sensor.- Eingang laufen lassen? Ist das Möglich? Das meine ich auch. Sorry für die Erklärung.

Also innerhalb eines Sketches, paralleler Betrieb von 4 Kanal Aktor und Sensoreingänge? Vorausgesetzt die CCU sieht das vor?

Also zeitgleichen Aktor und Sensor- Betrieb des Clones. Dadurch würde ich mir ein Modul sparen. Sonst müsste ich jeweils immer zwei Module bauen, um zu Senden und Empfangen. Mir ist nur wichtig das das innerhalb eines Moduls parallel läuft ( theoretisch Eingänge die zum senden führen und Ausgänge die empfangen wurden. Mit nur einem Modul.)

ps. Ich glaube ich muss mir erstmal einen Überblick im Programm verschaffen.

Vielen Dank im Voraus.

Dennis

viegener

@east: Ich bin gerade erst dazugekommen die Module HM-MOD-RE8 etc nachzuschauen, wenn ich das richtig verstehe enthalten die nicht nur einen Sender/Empfänger sondern auch bereits eine komplette HM-Implementierung. Nach meinem Verständnis braucht werden HM-MOD-RE8 noch HM-MOD-EM8 eine Asksin auf einem Arduino. Das Modul enthält bereits alles was durch AskSin dazukommen würde.

Asksin/NewAskSin ist nötig um mit einem "generischen" Send/Empfangsmodul auch HM-Geräte bauen zu können.

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

east

#981
Ja, richtig. Die eigentliche Frage war ja auch, ob ich die Module mit einem eigens gebautem Modul was mit der Askin läuft ersetzen kann.

Ich möchte einfach nur die beiden Module von HM durch eines mit der Askin ersetzen. :)

Gruß,

Dennis

viegener

Zitat von: east am 05 Januar 2016, 15:45:55
Ja, richtig. Die eigentliche Frage war ja auch, ob ich die Module mit einem eigens gebautem Modul was mit der Askin läuft ersetzen kann.

Ich möchte einfach nur die beiden Module von HM durch eines mit der Askin ersetzen. :)

Gruß,

Dennis

Theoretisch würde das gehen, praktisch scheitert das aber möglicherweise an der Grösse des Codes / Speicheranforderung (zumindest wenn wir von Arduino Nano etc mit ATMega328P reden). Ich habe inzwischen zwar aus den Devicebeschreibung (distillregs2) mal einige Registerbeschreibungen generiert und damit auch Code zum Laufen bekommen. Allerdings gibt es auch Fälle bei denen die erzeugten register.h nicht funktioniert ohne dass mir klar ist warum. Also könnte das ein zweites Problem auf dem Weg zu Asksin/Newasksin sein.

Ich kann auch nicht einschätzen wieviel hier noch in Codeänderungen investiert wird.

Johannes

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

east

#983
Ahh.. OK.

Das heisst wenn dann zb. einen Micro mit nem Mega32U4 oder so. OK wenn die 868 Module kommen mach mich mal ran ans Werk.

Hoffe doch das es noch weiter geht. Denn damit kann man viel Geld sparen, sollte man so etwas vorhaben. Natürlich würde das auch mit nem Raspberry gehen, aber genau wie die CCU kann das Dingen abstürzen. Bei so nen Askin-Modul würde das auch sehr wahrscheinlich stabiler sein. Denke ich.

OK. Der 32u4 hat ja nur 0.5kb mehr Sram. Das wars. Aber vielleicht ein 644 oder 1284P. Mal schauen.

Vorerst schon mal vielen Dank für die Mühe. Ich werde Euch dann auf den laufenden halten. Wenn ich da einmal durchblicke, werde ich das schon hinbekommen.

Grüße,

Dennis 

viegener

Zitat von: east am 05 Januar 2016, 17:32:32
Ahh.. OK.

Das heisst wenn dann zb. einen Micro mit nem Mega32U4 oder so. OK wenn die 868 Module kommen mach mich mal ran ans Werk.

Hoffe doch das es noch weiter geht. Denn damit kann man viel Geld sparen, sollte man so etwas vorhaben. Natürlich würde das auch mit nem Raspberry gehen, aber genau wie die CCU kann das Dingen abstürzen. Bei so nen Askin-Modul würde das auch sehr wahrscheinlich stabiler sein. Denke ich.

OK. Der 32u4 hat ja nur 0.5kb mehr Sram. Das wars. Aber vielleicht ein 644 oder 1284P. Mal schauen.

Vorerst schon mal vielen Dank für die Mühe. Ich werde Euch dann auf den laufenden halten. Wenn ich da einmal durchblicke, werde ich das schon hinbekommen.

Grüße,

Dennis

32u4 bringt keine Lösung aber vielleicht andersrum, werden denn wirklich 8 Relaisausgänge und -eingänge an einer Stelle gebraucht, macht es nicht Sinn das aufzuteilen?

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

east

#985
Nein Nein. Brauche nicht so viele ein- und ausgänge. Ausgänge vielleicht 4. Eingänge nur 2. Brauche nicht alle Kanäle der 8 des Empfängers oder des Senders.

Mal was anderes. Warum wurde die alte AskSin durch die NewAskSin ersetzt? Die alte ist der neuen in Übersichttlichkeit auf jeden Fall überlegen.

viegener

Die Frage müsste an trilu gehen, wie gesagt ich habe mich auch erst eingearbeitet,
Johannes
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Maiks

@kleinerDrache

Nehme nicht die AES lib sondern die normale newAskin  https://github.com/trilu2000/NewAskSin

und bleibe bei de 1.6.5 auch die 1.6.7 macht probleme bei verschiedenen Sketches (nicht nur Askin)

dort sollten die  unteren 3 Beispiele funktionieren 

HM_LC_Bl1_SM
HM_LC_Dim1PWM_CV
HM_LC_SW1_BA_PCB

Anschliessen des Funkmoduls ist richtig beschrieben in der WIKI,  was noch fehlt ist z.B.   

-Konfigtaster an Digital 8 gegen masse
-Status LED  Digital 4 gegen masse
-Schalt Ausgang  Digital  3 gegen masse (je nach sketch)

Die Anschlüsse sieht man in der Hardware.h  und nach funktion im haupt ino
Hier mal ein Beispiel von mir wo der Digital D3 als standart im sketch und von mir erweitert auf D5

void switchRly(uint8_t channel, uint8_t status) {
// switching the relay, could be done also by digitalWrite(3,HIGH or LOW)
   #ifdef SER_DBG
      dbg << F("switchRly: ") << channel << ", " << status << "\n";
   #endif
                                                            // check status and set relay pin accordingly
   if (status) { setPinLow(PORTD,5);                                       // Stromversorgung für Tor einschalten   
                if (hoch ==0) _delay_ms (3000);             // Zeitverzögerung nur Einschalten wenn Stromversorgung aus war.   
                millisAlt = getMillis();
                setPinHigh(PORTD,3);                        // Jetzt sender Schalten zur Bewegung des Tor's mit Verzögerung von 3 sec;
                hoch = 1;}
   else {setPinLow(PORTD,3);}

}


//- predefined functions --------------------------------------------------------------------------------------------------

Ich hoffe, das Dirk die AES branch noch fixed und über zeit ein Beispiel für jedes Homematic device bekommen um es einfacher zu machen :D 
@Trilu und Dirk, danke für die tolle Lib.

kleinerDrache

danke

Ich nehme die newAskin da die Alte ja nicht weiter entwickelt wird. Die Sketche lassen sich bis auf Lux und Test mit der neuesten IDE compilen. Brauch das ding eh nur für die Askin Lib alles andere auf dem Mega mach ich mit der Atmel IDE.

Trotzdem danke für die Tips und für die geile Lib.
Raspi 2 - Hmusb2 , 2xJeeLink , EnOcean pi: Serie14 Geräte , 6xHM-Sec-Rhs , 6xHM-CC-RT-DN, verschiedene MySensor Nodes, ein bischen MQTT

MBHG

Hi,

ich habe mir zwei Arduino Nanos geholt inkl. zwei echten 868 Funkmodulen. Pin 25 und 26 habe ich verbunden. HM_LC_SW4_BA_PCB auf den einen culf-520-trunk auf den anderen. Nach ein wenig hin und her hat das Pairing geklappt.

Manuelles Schalten der Zustände am HM_LC_SW4_BA_PCB inkl. korrekte Übertragung auf den CUL868 und FHEM klappt tadellos. Allerdings funktioniert die andere Richtung nur selten. Sprich schalten an FHEM resultiert in einen Schaltzustand am HM_LC_SW4_BA_PCB nur selten.

Wenn ich den CUL868 resette, sprich abziehe und wieder anstecke, dann funktioniert der erste Befehl eigentlich immer. Was auch immer funktioniert sind manuelle Schaltzustände an HM_LC_SW4_BA_PCB, die an den CUL868 übertragen werden.

Anbei mein Log von den letzten Aktivitäten

HM_LC_SW4_BA_PCB
AskSin-Lib V 0.2.2
AS.
PowerMod¥� 0
initRly: 1
initRly: 2
initRly: 3
initRly: 4

....
CC.
12...................................3 - ready
SN.
RV.
HMID: 58 23 FF, MAID: F1 28 07

<- 0E77
<- 0E 01 A0 10 58 23 FF F1 28 07 06 04 00 00 00 (1938)
<- 0E75
<- 0E 03 A0 10 58 23 FF F1 28 07 06 02 00 00 00 (2239)
<- 0E75
<- 0E 03 A0 10 58 23 FF F1 28 07 06 02 00 00 00 (2540)
  timed out (2840)
<- 0E77
<- 0E 01 A0 10 58 23 FF F1 28 07 06 04 00 00 00 (243710)
<- 0E77
<- 0E 01 A0 10 58 23 FF F1 28 07 06 04 00 00 00 (244011)
<- 0E77
<- 0E 01 A0 10 58 23 FF F1 28 07 06 04 00 00 00 (244312)
  timed out (244612)
0B 7F EB C6 53 07 E4 98 57 CC A9 BE
m> 0B 09 B0 01 F1 28 07 58 23 FF 01 0E (309192)
<- 0E7F
<- 0E 09 A0 10 58 23 FF F1 28 07 06 01 00 00 65 (309204)
0B 7C F8 D5 40 34 17 AB A4 7F 59 AE
m> 0B 0A A0 01 F1 28 07 58 23 FF 02 0E (309377)
0A 7F DB B5 60 14 F7 8B 44 DF 80
m> 0A 09 80 02 F1 28 07 58 23 FF 00 (309401)
0B 7C E8 C5 50 04 E7 9B 54 CF A9 BE
m> 0B 0A B0 01 F1 28 07 58 23 FF 02 0E (313359)
<- 0E7C
<- 0E 0A A0 10 58 23 FF F1 28 07 06 02 00 00 64 (313371)
0E 7D F9 C4 51 05 E6 9A 55 CE A8 85 A9 85 A0
m> 0E 0B A0 11 F1 28 07 58 23 FF 02 01 C8 00 00 (313553)
switchRly: 1, 200
0A 7C D8 B6 63 17 F4 88 47 DC 80
m> 0A 0A 80 02 F1 28 07 58 23 FF 00 (313573)
0E 7D E9 D4 41 35 16 AA A5 7E 58 35 D9 B5 B0
m> 0E 0B B0 11 F1 28 07 58 23 FF 02 01 C8 00 00 (315759)
<- 0E7D
<- 0E 0B 80 02 58 23 FF F1 28 07 01 01 C8 00 65 (315771)
0B 78 E4 C1 6C 60 3B 4F 08 1B F4 BE
m> 0B 0E B0 01 F1 28 07 58 23 FF 03 0E (407072)
<- 0E78
<- 0E 0E A0 10 58 23 FF F1 28 07 06 03 00 00 70 (407084)
<- 0E78
<- 0E 0E A0 10 58 23 FF F1 28 07 06 03 00 00 70 (407385)
<- 0E78
<- 0E 0E A0 10 58 23 FF F1 28 07 06 03 00 00 70 (407686)
  timed out (407986)
0B 78 E4 C1 6C 60 3B 4F 08 1B F4 BE
m> 0B 0E B0 01 F1 28 07 58 23 FF 03 0E (409757)
<- 0E78
<- 0E 0E A0 10 58 23 FF F1 28 07 06 03 00 00 70 (409769)
<- 0E78
<- 0E 0E A0 10 58 23 FF F1 28 07 06 03 00 00 70 (410070)
<- 0E78
<- 0E 0E A0 10 58 23 FF F1 28 07 06 03 00 00 70 (410371)
  timed out (410671)
0B 79 E5 C0 6D 61 3A 4E 09 1A F5 BE
m> 0B 0F B0 01 F1 28 07 58 23 FF 03 0E (484115)
<- 0E79
<- 0E 0F A0 10 58 23 FF F1 28 07 06 03 00 00 6F (484127)
<- 0E79
<- 0E 0F A0 10 58 23 FF F1 28 07 06 03 00 00 6F (484428)
<- 0E79
<- 0E 0F A0 10 58 23 FF F1 28 07 06 03 00 00 6F (484729)
  timed out (485029)
switchRly: 1, 0
<- 0E79
<- 0E 0F A0 10 58 23 FF F1 28 07 06 01 00 00 6F (761128)
0A 79 D5 B3 7E 72 49 7D 7A A9 80
m> 0A 0F 80 02 F1 28 07 58 23 FF 00 (761298)
switchRly: 1, 200
<- 0E72
<- 0E 04 A0 10 58 23 FF F1 28 07 06 01 C8 00 69 (761936)
0A 72 CE A8 75 79 52 76 71 B2 80
m> 0A 04 80 02 F1 28 07 58 23 FF 00 (762107)
switchRly: 1, 0
<- 0E73
<- 0E 05 A0 10 58 23 FF F1 28 07 06 01 00 00 69 (762433)
0A 73 CF A9 74 78 53 77 70 B3 80
m> 0A 05 80 02 F1 28 07 58 23 FF 00 (762609)
switchRly: 1, 200
<- 0E70
<- 0E 06 A0 10 58 23 FF F1 28 07 06 01 C8 00 68 (764883)
0A 70 CC AA 77 7B 50 74 73 B0 80
m> 0A 06 80 02 F1 28 07 58 23 FF 00 (765058)
switchRly: 1, 0
<- 0E71
<- 0E 07 A0 10 58 23 FF F1 28 07 06 01 00 00 68 (772068)
0A 71 CD AB 76 7A 51 75 72 B1 80
m> 0A 07 80 02 F1 28 07 58 23 FF 00 (772239)
switchRly: 1, 200
<- 0E7E
<- 0E 08 A0 10 58 23 FF F1 28 07 06 01 C8 00 63 (774590)
0A 7E DA B4 61 15 F6 8A 45 DE 80
m> 0A 08 80 02 F1 28 07 58 23 FF 00 (774761)
0E 7F EB D6 43 37 14 A8 A7 7C 5A 37 13 EF B0
m> 0E 09 B0 11 F1 28 07 58 23 FF 02 01 00 00 00 (784804)
switchRly: 1, 0
<- 0E7F
<- 0E 09 80 02 58 23 FF F1 28 07 01 01 00 00 70 (784817)
switchRly: 1, 200
<- 0E7F
<- 0E 09 A0 10 58 23 FF F1 28 07 06 01 C8 00 70 (792716)
0A 7F DB B5 60 14 F7 8B 44 DF 80
m> 0A 09 80 02 F1 28 07 58 23 FF 00 (792892)
0E 7C E8 D5 40 34 17 AB A4 7F 59 34 10 EC B0
m> 0E 0A B0 11 F1 28 07 58 23 FF 02 01 00 00 00 (796578)
switchRly: 1, 0
<- 0E7C
<- 0E 0A 80 02 58 23 FF F1 28 07 01 01 00 00 6D (796591)
switchRly: 1, 200
<- 0E7C
<- 0E 0A A0 10 58 23 FF F1 28 07 06 01 C8 00 6D (799221)
<- 0E7C
<- 0E 0A A0 10 58 23 FF F1 28 07 06 01 C8 00 6D (799521)
<- 0E7C
<- 0E 0A A0 10 58 23 FF F1 28 07 06 01 C8 00 6D (799822)
  timed out (800122)
switchRly: 1, 0
<- 0E7D
<- 0E 0B A0 10 58 23 FF F1 28 07 06 01 00 00 6D (807562)
<- 0E7D
<- 0E 0B A0 10 58 23 FF F1 28 07 06 01 00 00 6D (807862)
<- 0E7D
<- 0E 0B A0 10 58 23 FF F1 28 07 06 01 00 00 6D (808163)
  timed out (808463)
switchRly: 1, 200
<- 0E7A
<- 0E 0C A0 10 58 23 FF F1 28 07 06 01 C8 00 6D (888104)
<- 0E7A
<- 0E 0C A0 10 58 23 FF F1 28 07 06 01 C8 00 6D (888404)
<- 0E7A
<- 0E 0C A0 10 58 23 FF F1 28 07 06 01 C8 00 6D (888705)
  timed out (889005)


Hat jemand einen Tipp für mich?
-----------------------------------------------------------
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