Arduino Asksin library

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

Vorheriges Thema - Nächstes Thema

kuek

Zitat von: trilu am 20 Juli 2014, 21:58:43
Mhh, han die selbe test config. Daran kanns nicht liegen. Gerade noch mal getestet, mein testdevice schaltet immer noch.
Poste doch mal den output der seriellen schnittstelle.

pairing

<- 1A 03 A2 00 00 00 63 63 19 63 15 00 6C 50 53 30 30 30 30 30 30 30 32 10 41 01 00 (l:27)
-> 10 01 B0 01 F1 00 64 00 00 63 00 05 00 00 00 00 00 (l:17)
<- 0A 01 80 02 00 00 63 F1 00 64 00 (l:11)
-> 13 02 A0 01 F1 00 64 00 00 63 00 08 02 01 0A F1 0B 00 0C 64 (l:20)
<- 0A 02 80 02 00 00 63 F1 00 64 00 (l:11)
-> 0B 03 A0 01 F1 00 64 00 00 63 00 06 (l:12)
<- 0A 03 80 02 00 00 63 F1 00 64 00 (l:11)
-> 10 04 A0 01 F1 00 64 00 00 63 00 04 00 00 00 00 00 (l:17)
<- 18 04 A0 10 00 00 63 F1 00 64 02 02 01 05 00 0A F1 0B 00 0C 64 12 FF 00 00 (l:25)
-> 0A 04 80 02 F1 00 64 00 00 63 00 (l:11)
-> 10 05 A0 01 F1 00 64 00 00 63 01 04 00 00 00 00 01 (l:17)
<- 0E 05 A0 10 00 00 63 F1 00 64 02 08 FF 00 00 (l:15)
-> 0A 05 80 02 F1 00 64 00 00 63 00 (l:11)
-> 0B 06 A0 01 F1 00 64 00 00 63 01 03 (l:12)
<- 16 06 A0 10 00 00 63 F1 00 64 01 1F A6 5C 06 1F A6 5C 05 00 00 00 00 (l:23)
-> 0A 06 80 02 F1 00 64 00 00 63 00 (l:11)
-> 10 07 A0 01 F1 00 64 00 00 63 01 04 1F A6 5C 05 03 (l:17)
<- 1A 07 A0 10 00 00 63 F1 00 64 02 02 FF 03 FF 04 FF 05 FF 06 FF 07 FF 08 FF 09 FF (l:27)
-> 0A 07 80 02 F1 00 64 00 00 63 00 (l:11)
<- 1A 08 A0 10 00 00 63 F1 00 64 02 0A FF 0B FF 0C FF 82 FF 83 FF 84 FF 85 FF 86 FF (l:27)
-> 0A 08 80 02 F1 00 64 00 00 63 00 (l:11)
<- 18 09 A0 10 00 00 63 F1 00 64 02 87 FF 88 FF 89 FF 8A FF 8B FF 8C FF 00 00 (l:25)
-> 0A 09 80 02 F1 00 64 00 00 63 00 (l:11)
-> 10 08 A0 01 F1 00 64 00 00 63 01 04 1F A6 5C 06 03 (l:17)
<- 1A 08 A0 10 00 00 63 F1 00 64 02 02 FF 03 FF 04 FF 05 FF 06 FF 07 FF 08 FF 09 FF (l:27)
-> 0A 08 80 02 F1 00 64 00 00 63 00 (l:11)
<- 1A 09 A0 10 00 00 63 F1 00 64 02 0A FF 0B FF 0C FF 82 FF 83 FF 84 FF 85 FF 86 FF (l:27)
-> 0A 09 80 02 F1 00 64 00 00 63 00 (l:11)
<- 18 0A A0 10 00 00 63 F1 00 64 02 87 FF 88 FF 89 FF 8A FF 8B FF 8C FF 00 00 (l:25)
-> 0A 0A 80 02 F1 00 64 00 00 63 00 (l:11)


status request
-> 0B 09 B0 01 F1 00 64 00 00 63 01 0E (l:12)
<- 0E 09 A4 10 00 00 63 F1 00 64 06 01 00 00 00 (l:15)
-> 0A 09 80 02 F1 00 64 00 00 63 00 (l:11)


set on
-> 0E 0A B0 11 F1 00 64 00 00 63 02 01 C8 00 00 (l:15)
<- 0E 0A 80 02 00 00 63 F1 00 64 01 01 C8 00 00 (l:15)
<- 0E 04 A4 10 00 00 63 F1 00 64 06 01 00 00 00 (l:15)
-> 0A 04 80 02 F1 00 64 00 00 63 00 (l:11)


da war der Fehler schon... habe dann einen reset gemacht

Starting sketch...
pair: F1 00 64
<- 0E 00 A4 10 00 00 63 F1 00 64 06 01 00 00 00 (l:15)
<- 0E 00 A4 10 00 00 63 F1 00 64 06 01 00 00 00 (l:15)
-> 0A 00 80 02 F1 00 64 00 00 63 00 (l:11)


set on
-> 0E 0D B0 11 F1 00 64 00 00 63 02 01 C8 00 00 (l:15)
<- 0E 0D 80 02 00 00 63 F1 00 64 01 01 C8 00 00 (l:15)
<- 0E 01 A4 10 00 00 63 F1 00 64 06 01 C8 00 00 (l:15)
-> 0A 01 80 02 F1 00 64 00 00 63 00 (l:11)


jetzt hat er das "on" angenommen

status request
-> 0B 0E B0 01 F1 00 64 00 00 63 01 0E (l:12)
<- 0E 0E A4 10 00 00 63 F1 00 64 06 01 C8 00 00 (l:15)
-> 0A 0E 80 02 F1 00 64 00 00 63 00 (l:11)


noch einmal status request
-> 0B 0F B0 01 F1 00 64 00 00 63 01 0E (l:12)
<- 0E 0F A4 10 00 00 63 F1 00 64 06 01 C8 00 00 (l:15)
-> 0A 0F 80 02 F1 00 64 00 00 63 00 (l:11)


set off
-> 0E 10 B0 11 F1 00 64 00 00 63 02 01 00 00 00 (l:15)
<- 0E 10 80 02 00 00 63 F1 00 64 01 01 00 00 00 (l:15)
<- 0E 02 A4 10 00 00 63 F1 00 64 06 01 00 00 00 (l:15)
-> 0A 02 80 02 F1 00 64 00 00 63 00 (l:11)


set on
-> 0E 11 B0 11 F1 00 64 00 00 63 02 01 C8 00 00 (l:15)
<- 0E 11 80 02 00 00 63 F1 00 64 01 01 C8 00 00 (l:15)
<- 0E 03 A4 10 00 00 63 F1 00 64 06 01 00 00 00 (l:15)
<- 0E 03 A4 10 00 00 63 F1 00 64 06 01 00 00 00 (l:15)


da ist der fehler wieder.

no_Legend

Super Arbeit, echt gut gemacht.

Gibt es auch schon eine Nachbildung der Rollladenaktoren?
Also HM-LC-BI1PBU-FM oder HM-LC-Bl1-FM?
Docker FHEM immer aktuell,4x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
Homematic, Shelly, Tasmota, MQTT, Unifi Network usw.

unimatrix

Nein, bisher noch nicht. Beim alten Aktor (nicht-PBU) hat glaub ich auch noch niemand "nachgeschaut" was da überhaupt für ein uC drin ist und ob man halbwegs einfach an den ISP Port rankommt.

no_Legend

#648
Hi Unimatrix,

das ist ja schade.

Hab ich es richtig verstanden, dass Ihr die Programme aus dem µC auslest?
Übernehmt Ihr dann die Firmware komplett?

Ich bin gerade dabei für meine Velux Rolläden einen Platine zu entwerfen.
Da wäre es super den µC gleich mit drauf zu packen.

Eventuell hol ich mir dann die Bausätze.

Edit:
Hier gibts bilder. http://s6z.de/cms/index.php/homeautomation/homematic/36-schaltaktor-hm-lc-sw1pbu-fm
Denke es ist ein ATMEGA 644A

Gruß Robert
Docker FHEM immer aktuell,4x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
Homematic, Shelly, Tasmota, MQTT, Unifi Network usw.

trilu

man kann die programme nicht aus dem uC auslesen, sind dagegen geschützt. jan hat beim wandschalter die lib angepasst, so dass man die original firmware überschreiben kann.
prinzipiell kann man den relay sketch als rolladen aktor missbrauchen. das was halt derzeit nicht drin ist, ist das absichern gegen zu schnelles schalten der rolladenmotoren. ich habe mir aber so elektrische fensteröffner gekauft und brauche auch eine steuerung - werde mich also in absehbarer zeit daran setzen um einen rolladensteuerung zu basteln :-)

unimatrix

Zitat von: trilu am 20 Juli 2014, 21:58:43
@unimatrix
Stimmt, die hmid liegt jetzt fix im flash, dirk hat sie dahin verlagert, damit er sie per script im .hex file verändern kann. Änderung ist irgendwo im temperatur sensor sketch beschrieben...

Ja, das habe ich gefunden. Allerdings ersetzt er ja dort die Default-ID. Aber damit die überhaupt erstmal im Flash ist, und bei der Ersetzung per "sed" gefunden wird, beinhaltet ja auch beim Temperatursensor die register.h noch folgendes. Oder was übersehe ich. Interessiere mich nur deswegen dafür, weil ich mich bei der Anpassung des Schalters natürlich an den "Standard" halten möchte.

Du sagtest, du hast noch weitere Änderungen an der Lib in der Queue? Werden das größere Umstrukturierungen, also macht es jetzt Sinn, den Schalter an den aktuellen GIT-Stand anzupassen?

const uint8_t devParam[] PROGMEM = {
0x10,                                    // The firmware version, 1 byte
0xF1, 0x01,                              // The model-ID    0xF1 0x01 = DIY (HB-UW-Sen-THPL-I)
// 0xF1, 0x02,                              // The model-ID    0xF1 0x01 = DIY (HB-UW-Sen-THPL-O)
'H','B','0','D','e','f','a','u','l','t', // The serial 10 bytes, needed for pairing   (Default for flash tool)
0x70,                                    // Frame type 0x70 = WEATHER_EVENT
0x03, 0x01, 0x00,                        // Device Info, 3 byte, describes device, not completely clear yet. includes amount of channels

0xAB, 0xCD, 0xEF                         // The HM-ID 3 bytes, needed for pairing     (Default for flash tool)
};

trilu

so wirklich tief bin ich nicht in den änderungen von dirk drin. hab sie einfach übernommen und festgestellt, dass der rest nicht mehr funzt. hätte vielleicht vorher schauen soll was bei einem merge alles verbogen ist :-)
eigentlich lohnt es sich nicht mehr, den hm-schalter an das aktuelle asksin anzupassen. bin gerade dabei ein komplettes rework zu machen. möchte mehr modularisieren und einige fehler ausmerzen. Siehe Anhang Seite 35

unimatrix

sehr interessant!

Ich werde trotzdem weiter anpassen und betrachte es als Lerneffekt für mich. TODO ist ja auch noch das Dimmer-Profil. Da ich jetzt den Schaltplan habe werde ich mir einen Dimmer "zerflashen" und anfangen da Low-Level Übungen mit zu machen. Es wird also so schnell nicht langweilig.

Wenn du Hilfe benötigst, lass es mich wissen.

PeterS

Hallo kuek
Der 4fach Aktor HM_LC_SW2_BA_PCB funktioniert. Hat aber schon mal jemand versucht 2 Geräte in einem Arduino zu realisieren ? 4fach Aktor + 3 Schalter (HM-SCI-3-FM) ?
Gruss Peter

Zitat von: kuek am 01 Juli 2014, 00:10:52
Hallo Peter,

falls Du noch interesse hast. Der sketch ist im Anhang. Nutzt jedoch eine alte relay.h und .cpp die ins den lib ordner muss.

Grüße, kuek

unimatrix

für so etwas sollte man besser ein neues Geräte erfinden, was eben 7 Kanäle hat.  4 Aktoren und 3 Remotes.

Da es das dann genau so in FHEM noch nicht gibt, muss das dort ebenfalls definiert werden, aber das ist machbar.

Zwei Geräteinstanzen auf einem Controller wären deutlich komplexer und man hat sich aus guten Grund von dieser Idee verabschiedet.

Ich habe mir für meine Fußbodenheizungssteuerung (Panstamp-Shield mit 8 Relais)  auch einen 8-Kanal-Aktor definiert. Mit der Lib geht das ja nach Baukastensystem. Jetzt muss der Panstamp nur noch geliefert werden ;)

PeterS

#655
Hallo unimax

Wie funktioniert das mit dem Baukastensystem. Hab ich das was überlesen ?

PS: Wenn man einen 8fach Aktor definieren kann, dann sollte auch ein 4fach Schalter + 4fach Aktor möglich sein  ;D

Gruss Peter

Zitat von: unimatrix am 22 Juli 2014, 20:07:25
Ich habe mir für meine Fußbodenheizungssteuerung (Panstamp-Shield mit 8 Relais)  auch einen 8-Kanal-Aktor definiert. Mit der Lib geht das ja nach Baukastensystem. Jetzt muss der Panstamp nur noch geliefert werden ;)

unimatrix

Baukasten ist vll. übertrieben. Natürlich muss man sich mit der Lib etwas beschäftigen. Mit dem Perl-Script legt man sich die passende register.h für die gewünschte Anzahl von Kanälen an und dann kommen noch ein paar Zeilen in den Sketch und dann ist die Firmware eigentlich schon fertig.

Was dann noch gemacht werden muss, ist auf der FHEM Seite das entsprechende Device zu implementieren. Das geht aber aber auch recht übersichtlich. man braucht ja nix völlig neues. Für ein Device mit Buttons und Relais kann man sich an der Custom-Firmware des Unterputz-Aktors orientieren. Der hat 2 Buttons und 2 Switches - muss man nur skalieren.

unimatrix

@Trilu: ich weß du hast wenig Zeit (ich kenne das von mir) und ich weiß nicht, wie weit deine Änderungen schon fortgeschritten sind.

Ich habe inzwischen angefangen einen Dimmer-Prototypen zu entwerfen. Den habe ich zunächst auf den Schalter gespielt und dabei als "Frontend" die LED per Soft-PWM gedimmt. Damit kann ich jetzt Rampen fahren usw.

Es wurde dann sehr schnell klar, dass vieles aus der Relay-Klasse in der Dimmer-Klasse fast gleich sein wird. Die Dimmer-Klasse kann eben noch einiges mehr.

Daher denke ich, es sollte eine Elternklasse "Aktor" erstellt werden, und dann sollten die Relay und Dimmerklassen nur Spezialisierungen sein.

Ich erwähne das hier nur, weil es ja womöglich für dein aktuelles Refactoring schon relevant sein könnte. Wenn wir den Schritt dann mal haben, dann fehlen auch noch ein paar Leistungsmerkmale in der Relay-Klasse, z.B. PowerOn Verhalten usw.

Außerdem muss irgendwie die Option des externen EEproms rein. Als konfigurierbare Option eben. Bei dem Dimmer wird man es in jedem Fall brauchen, das Registerset ist einfach sehr umfangreich. Da kann man die 4KByte gut brauchen.

trilu

@jau, zeit um wirklich zu proggen ist mangelware....

Um ehrlich zu sein wäre es mir lieber die Aktor Klassen getrennt zu halten. Mein Ziel ist es, auch die Klassen per Konfigurator einzubinden. Da würde es helfen wenn sie möglichst eigenständig sind. In der Relay Klasse fehlt auch die Behandlung von Sensoren, also Alles was Message 41 ist.

Das mit den externen EEproms wird in der neuen Lib einfacher werden, die Verbindung zur HW kommt in eine HAL, dann müssen nur die EEprom schreib und lese Routine aufgebohrt werden.
Wenn du die Dimmer Klasse einigermassen hast wäre es nett wenn du sie mir zuschicken könntest. Würde sie gerne mal testen und mit in die bisherige Lib packen.

Viele Grüße
Horst

unimatrix

Ich wollte natürlich die Klassen trennen, aber sie könnten Dinge die gleich sind von einer Aktor-Klasse erben. Um doppelten Code zu sparen. Aber es ist deine Lib, es war nur eine Anregung.

Ich mache die Dimmerklasse erstmal so fertig. Läuft als Test auch auf einem Arduino Pro Mini mit der roten LED. Kann ich aber hier nicht komplett testen, weil ich dafür noch keine Funkmodule habe.

Schicke dir das Zeug, sobald es irgendwie läuft. Leider kommt jetzt, wo ich gerade so gut drin bin, eine Zeit von ein paar Tagen mit sehr wenig Zeit dafür :(