Arduino Asksin library

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

Vorheriges Thema - Nächstes Thema

Moebiu5

Hi,
ist es mit der library möglich, mit nur einem Arduino sowohl einen Dimmer als auch einen Sensor (zB Pir oder Taster) zu kombinieren?
Danke!

trilu

ja klar - dazu werden einfach mehrere channels definiert und die verbindung untereinander über peers hergestellt.
kommunikation läuft dann im device - ich werde bei gelegenheit ein schalter, relay device als beispiel bauen...

Moebiu5

Super!
Du brauchst auch kein ganz neues Beispiel machen - eine Erweiterung des HM_LC_Dim1PWM_CV um einen Taster würde mir schon sehr weiterhelfen.

Maiks

Ich habe mal den Dimmer nach gebaut, dabei ist mir aufgefallen, dass on for timer immer doppelt so lange dauert wie angegeben.

Außerdem geht wenn ich dimme die LED ein paar sekunden später immer wieder aus :(

Ist es normal, dass die Serielle Ausgabe nur noch HEX ausgibt ?

Ist aber ein Super Projekt, seine Eigenen Homematic Komponenten zu Entwickeln, daher ein großes dank an alle Mitwirkenden .

trilu

hmm, habe den dimmer schon einige tage nicht mehr am laufen gehabt und ein paar kleinigkeiten in der lib geändert, aber solche probleme sollte es eigentlich nicht geben.
was nutzt du für hardware?
wie hast du das peer eingetragen - mit der hm config soft?

die serielle schnittstelle musst du auf 57600 baud einstellen - per default zeige ich aber nur noch den traffic an, also keine modulausgaben, kannst du aber in jeder .cpp einschalten, ganz oben #define xx_DBG


Maiks

Ich habe eine Panstamp (AVR) und habe es einfach über FHEM gepairt als Adapter nutze ich eine HM-LAN, kann aber auch mit einer CUNO testen.

Normales Ein/Aus geht auch wunder bar.

trilu

alles gut - hm-lan passt auch. ich vermute das problem der ausgehenden led an der fehlenden oder falschen config.
mach mal das peering mit der hm-config soft.

geht seriell jetzt?

MaSchuessler

Hallo Zusammen,

hat schon jemand Erfahrungen mit dem HM_LC_SW1_BA_PCB und der NewAskSim lib?

Danke

Marcus

Maiks

So habe jetzt mal mit der HM Software gepairt, da konnte ich Einstellungen vornehmen, z.B. interne Taster usw...
Allerdings geht danach nichts mehr :(     

Also falsche ports glaube ich kaum, da dimmen und sw. ja funktioniert hat (bis auf die Auschalterrei nach ein paar sekunden)

Habe danach mal das normale Batterie Aktor sketch geflasht und da geht auch nichts mehr, unter FHEM Pairing möglich unter der HM Software nicht, will immer einen Sicherheitsschlüssel. 

Man, das ist echt zum verzweifeln, wollte danach mal das mit den Sensor testen, da ich hier einen CO2 sensor liegen habe.

MaSchuessler

Hallo trilu,

eine tolle Bibliothek!

Ich habe allerdings einige Probleme mit der Erzeugung der Register.h Datei. Die Verwendung von destillRegs scheint nur einen Teil der notwendigen Informationen zu generieren.

Kann das sein?

Vielen Dank

Marcus



lech

#790
Hallo Trilu,

mir ist aufgefallen, dass das manuele Einschalten durch den Taster (D8 gegen Masse) im Beispiel  HM_LC_SW1_BA_PCB (NewAskSin), keine Rückmeldung an die Zentrale FHEM/CCU schickt.
Somit bleibt der Status in der Zentrale unverändert. Ist das beim Original auch so?
Kann man den Sketch so abändern, dass beim manuellen Einschalten zu FHEM/CCU kommuniziert wird?

Danke schon mal

trilu

habe heute noch mal den relay sketch überarbeitet - er müsste jetzt wie gewünscht funktionieren

@lech - stimmt, habe ich jetzt eingebaut, ist beim original auch so das ein status gesendet wird.

@MaSchu - mhh, bis auf die HMID, Seriennummer und device identification sollte sie eigentlich alles erzeugen

//- ----------------------------------------------------------------------------------------------------------------------
//- settings of HM device for AS class -----------------------------------------------------------------------------------
const uint8_t devIdnt[] PROGMEM = {
/* Firmware version 1 byte */  0x15, // don't know for what it is good for
/* Model ID         2 byte */  0x00, 0x6c, // model ID, describes HM hardware. Own devices should use high values due to HM starts from 0
/* Sub Type ID      1 byte */  0x10, // not needed for FHEM, it's something like a group ID
/* Device Info      3 byte */  0x41, 0x01, 0x00 // describes device, not completely clear yet. includes amount of channels
};


//- ----------------------------------------------------------------------------------------------------------------------
//- channel slice address definition -------------------------------------------------------------------------------------
const uint8_t cnlAddr[] PROGMEM = {
0x02,0x05,0x0a,0x0b,0x0c,0x12,
0x08,
0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,
};  // 29 byte

//- channel device list table --------------------------------------------------------------------------------------------
EE::s_cnlTbl cnlTbl[] = {
// cnl, lst, sIdx, sLen, pAddr;
{0, 0, 0x00, 6, 0x000F},
{1, 1, 0x06, 1, 0x0015},
{1, 3, 0x07, 22, 0x0016},
};  // 18 byte

//- channel device list table --------------------------------------------------------------------------------------------
EE::s_peerTbl peerTbl[] = {
// cnl, pMax, pAddr;
{1, 6, 0x009A}
};  // 4 byte

//- handover to AskSin lib -----------------------------------------------------------------------------------------------
EE::s_devDef devDef = {
1, 3, devIdnt, cnlAddr,
};  // 10 byte

//- module registrar -----------------------------------------------------------------------------------------------------
RG::s_modTable modTbl[1];


so müsste das ergebnis aussehen...


lech

Hi Trilu,

super, funktioniert wie das Original   ;D
Damit wird die Zirkulationspumpe zur bestimmten Zeiten angesteuert. Und wenn der Tempsensor plötzlichen Verbrauch erkennt, so springt die Pumpe wieder an und meldet über den Rückkanal an die Zentrale. Falls es jemanden interessiert, hier ein interessanter Beitrag:
http://www.stall.biz/?project=warmwasser-zirkulationspumpe-intelligent-geschaltet-mit-oder-ohne-homematic-anbindung

Wenn du mir noch einen Hinweis geben könntest wie ich aus diesem Sketch einen einfachen Taster machen könnte (HM-PB-2-WM55-2).
Ich wollte schon lange meine Türklingel an das System anbinden  ::)
Die alte Lib lässt sich leider nicht mehr kompilieren, sonst würde ich den HM6TastenSwitch Sketsch missbrauchen. Ich habe jetzt versucht die alten Libs von Dirk und Unimatrix, die gehen aber auch nicht mehr.
Mein Problem ist, dass ich als Anfänger deinen Sketch nicht ganz verstehe. Manchmal verwendest du Komanden wie beispielsweise "PORTB = PORTC = PORTD = 0x00", das ist bestimmt nicht "arduinisch", damit meinst wahrscheinlich sowas wie "pinMode(ledPin, OUTPUT/INPUT)" aus Processing oder C Sprache.
In den ganzen Arduino Büchern ist es viel einfacher beschrieben. So bin ich dann auf deine Beispiele angewiesen.

Trotzdem vielen Dank für deine tolle Arbeit und wünsche noch frohe Weihnachten und einen guten Rutsch!

P.S. zu Weihnachten habe ich mir das dickste Arduino Kochbuch gewünscht  ;)

trilu

#793
@lech - Danke fürs Testen und die Rückmeldung!
Am Anfang habe ich mich auch strikt an Arduino gehalten, habe aber im Laufe der Zeit gemerkt, das Arduino manchmal doch recht einschränkt.
Um alle Pins sicher in den Zustand low zu versetzen müsste man in Arduino für jeden Pin einzeln den Befehl pinMode(pin,direction) und digitalWrite(pin, state) verwenden. In c++ geht das viel einfacher. Man setzt Input/Output über das Data Direction Register DDR für einen oder alle Pins auf einmal, danach setzt man die entsprechenden PIN Zustände über das PORT Register.

"PORTB = PORTC = PORTD = 0x00" setzt alle Pins an allen Ports auf LOW.

Den Tasten Switch werde ich bei Gelegenheit bauen. Bin mit der Sensor Class noch nicht ganz durch, aber danach kommt der Switch dran, versprochen.
Ich will einen Touch Sensor Switch bauen. Soll sich verhalten wie ein HM Switch, aber eben nicht per Taster sondern Touch. Gibt einen recht interessanten Chip dazu, den MPR121. Braucht 29ua im Bereitschaftsmodus, somit batterieschonend genug.
http://cache.freescale.com/files/sensors/doc/data_sheet/MPR121.pdf?fasp=1&WT_TYPE=Data%20Sheets&WT_VENDOR=FREESCALE&WT_FILE_FORMAT=pdf&WT_ASSET=Documentation&fileExt=.pdf

Frohe Weihnachten!

Maiks

Nach etlichen Versuchen tut der dimmer jetzt wieder :D

Allerdings immer noch mit dem Problem, das sobald man up oder down drückt bzw. pct  auf einen Wert einstellt nach ca. 8 sekunden die LED wieder ausgeht.
wenn man pct auf 100 Stellt funktioniert es gar nicht (geht nicht ein).

Der Config taster hat leider auch keine Funktion außer Anlernen.

Hatte mir den Source code mal aqngeschaut aber nirgendwo gefunden, woran das liegen kann.

P.S. on for time ist ja auch doppelt so lange wie angegeben, könnte das ewtl. zusammenhängen.

Wäre für tips, wo ich schauen muss dankbar, da ich auch erst mit arduino angefangen habe und versuche, das ganze zu verstehen..

Schönes Fest an alle :D :D :D