AskSin++ Library

Begonnen von papa, 08 September 2016, 11:11:25

Vorheriges Thema - Nächstes Thema

Xent

Beim SPI_PINS_HSPI_OVERLAP sollten ja die Pins verwendet werden, die auch den Flash ansprechen.
Dort könnte man auch einfacher dran als an die anderen.
Müsste man sich nur noch einen Pin für den CSn raussuchen.

Jochen222

Zitat von: papa am 15 September 2017, 09:37:12
Das Zusammenspiel mit der CCU kann ich nicht testen. Ich verwende nur FHEM.

Es kann schon sein, dass in der einen oder anderen DeviceInfo-Message eines Examples irgendwas nicht passt. FHEM ist da glaube ich sehr großzügig. Die CCU könnte da etwas genauer sein. Gegebenenfalls bräuchten wir hierfür mal ein paar Datenmitschnitte der originalen Sensoren. Zur Entwicklung habe ich nur die XML-Beschreibungen, welche diese Infos nicht beinhalten.

Wegen dem Lichtsensor musst Du mal in den Pullrequest von Xent schauen. Ich habe hier irgend eine alte Version der TSL-Lib, welche aus einem anderen Projekt (Universalsensor) stammt. Für Sensoren habe ich schon ein paar Ideen, wie diese möglichst flexibel in die Lib zu integrieren sind. Das dauert aber sicherlich noch etwas und wird dann auch nicht mehr für V2 gemacht.

Gibt es eine Möglichkeit an die Deviceinfos heranzukommen? Liegen die evtl. als XML Dateien vor, welche evtl. im CCU2 Image oder im RaspberryMatic Image / Source enthalten sind?

Die RC-8 habe ich zwar nicht aber z.B. ein original 8-fach Sendemodul. Wie könnte man einen Datenmitschnitt erstellen?

papa

Ich habe mir die Antwort gerade nochmal in Ruhe angesehen. Die CCU antwortet mit einer AES-Challange. Die CCU hat scheinbar AES standardmäßig für den HM.RC-8 aktiviert, Du musst so wir im Readme geschrieben AES beim kompilieren aktivieren.

Wie man den Key kriegt, steht hier.

Für die anderen Geräte bräuchte man mal die Pair-Messages von einem originalen Gerät. Möglicherweise hilft hier aber auch AES an.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Xent

Entweder mit AES Compiler oder wie ich schon geschrieben hatte für den Kanal die Gesicherteübertragung deaktivieren.

Jochen222

..bin jetzt erst zum ausprobieren gekommen.

Beides funktioniert mit dem RC-8, mit AES compilieren bzw. das Ausschalten der gesicherten Übertragung!  ;D

Danke!

Xent

Ich hab gerade mal geschaut was man alles für AsksinPP auf ESP8266 machen muss.
1. pgmspace.h anpassen --> kein Problem gibts auch für den ESP müssen nur die Includes angepasst werden
2. EnableInterrupt --> soweit ich gesehen habe wird beim AVR eh nur das AttachInterrupt verwendet. Dies kann der ESP auch nur dass man dort noch den PIN "übersetzen" muss.
3. Timer1 --> hier müsste etwas mehr gemacht werden. Der ESP hat auch nen Timer der bis zu 80 mal pro Mikrosekunde auslösen kann. Vielleicht könnte man das in die Timer1 Lib integrieren.
4. SPI Lib für den ESP damit auf den CC1101 und den Flash gleichzeitig zugegriffen werden kann.
5. EERPROM Lib für den ESP da dieser keinen EEPROM hat und dieser nur im Flash simuliert wird.

Weiter bin ich noch nicht gekommen.

Werd aber morgen versuchen nen Pro Mini und Funkmodul in die Dose zu Quetschen.
Der 1€ mehr tut auch nicht weh und vom Löten macht es auch keinen großen Unterschied.
Will dann den Taster auch für AsksinPP verwenden und den Status des Relais auslesen damit auch der richtige Status gesendet wird wenn es vom ESP geschaltet wird.

papa

Schau mal in Master ist der Timer1 schon wegen dem ATMega32 raus geflogen. Und für STM32 habe ich auch schon Macros für enableInterrupt() in AskSinPP.h drin.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Xent

Soo, habe jetzt mal die Variante mit dem Pro Mini umgesetzt.
Morgen lad ich noch nen paar Bilder und den Sketch hoch.#
Irgendwer steht bei mir gerade auf der Leitung ...

Xent

#518
Soo, hier sind die anderen Bilder und der passende Sketch.

Zur Funktion:
Die Funktion der originalen Firmware bleibt erhalten bzw. es kann auch eine alternative auf den ESP geflasht werden, dann muss die Steckdose aber auch noch durch den Knopf schaltbar sein.

Pin 6 am Arduino ist als Input ohne Pullup konfiguriert und überwacht den Pegel am Transistor der das Relais schaltet.
Wenn das Relais über den ESP ein/ausgeschaltet wird, sendet der Arduino den neuen Status an Homematic.

An Pin 7 und 8 des Arduino ist der Taster der Steckdose angebunden.
Pin 7 und 8 deswegen, da ich nicht so tief in die Buttonklasse eingreifen wollte, da ich den Taster ja auch über den Arduino "betätigen" will und dazu der Modus des Pins umgeschaltet werden muss und der Interrupt entfernt / wieder hinzugefügt werden muss.
Ich habe lediglich eine eigene ConfigButtonKlasse erstellt, die nur auf lange Tastendrücke fürs pairen und resetten reagiert.

Der Pin 7 ist als Input ohne Pullup konfiguriert.
Nur wenn über Homematic geschaltet werden soll, dann wird der Pin für 50ms als Ausgang konfiguriert und auf LOW gezogen.
Dadurch wird für den ESP ein Tastendruck simuliert und das Relais wird ein/aus geschaltet.
Natürlich wird beim Einschalten vorher geprüft, ob es nicht schon eingeschaltet ist.
Die 50ms sind die kleinste Verzögerung ab der der ESP auf einen Tastendruck reagiert.
Aktuell mache ich das alles direkt in der SwitchChannelKlasse, daher verzögert sich die Statusmeldung an Homematic um 50ms, was aber kein Problem ist.


Der Arduino und das Funkmodul sind auf der Niederspannungsseite der Platine untergebracht und haben genug Abstand zu den spannungsführenden Teilen der Platine.
Dadurch, dass nichts nach außen geführt ist, braucht man sich darum auch keine Sorgen machen.
Nur beim Programmieren des Arduino sollte man die ganze Platine direkt mit einem anderen Netzteil als dem Programmieradapter mit 3,3V versorgen und nicht über das interne Netzteil.

Was haltet ihr von dieser Variante?
Gibts noch Tipps oder Verbesserungsvorschläge?

papa

Nicht schlecht. Könntest Du noch die Pins ändern ? Wenn Du D3 anstatt D7 nimmst, dann geht es auch mit der HM-Universal-Platine.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Xent

Ich hab Pin 7 genommen, da ich dann nur noch ne Brücke nach Pin 8 auf dem Arduino selbst gemacht habe.
Wenn das Schalten des Tasters über Pin 3 erfolgen soll, muss man nur das Define RELAY1_PIN ändern und den natürlich mit dem Taster verbinden.

Xent

Wie genau funktioniert das eigentlich mit dem OTA?
Bezieht der Arduino das Update nur von der gepairten Zentrale bzw. FEHM?
Ich nutz ja nur die CCU aktuell, könnte ich das Update auch direkt über einen anderen Arduino mit CC1101 z.B. über die Arduino GUI aufspielen?

ext23

Also das mit der Steckdose ist schon ganz nett, aber so ganz leuchtet mir das nicht ein noch eine HM Anbindung einzubauen wenn das Teil doch schon WLAN kann? Wenn du nur eine billige HM Steckdose brauchst kannst du doch auch die billigen Baumarkt Steckdosen nehmen und dort dein Arduino+CC1101 einbauen, das spart dann auch ne ganze Menge Energy, der ESP schluckt ja doch einiges. Man muss halt wegen der Spannungsversorgung schauen, aber wenn du nur ein Arduino ran klemmst reicht die aus den billig Steckdosen auch aus. Da ist kein richtiges Netzteil drin und wenn dann auch nur 5-12V aber mit einem DCDC Wandler bekommt man das auch hin. Und viel unsicherer als diese gern abbrennenden China Schachteln ist es auch nicht ;-) Ich hab es mir abgewöhnt das Zeug zu kaufen wo kein Deutscher Ing. drüber geschaut hat. Mir sind schon so viele von den Teilen um die Ohren geflogen, das ich heil froh bin immer daneben gestanden zu haben zum löschen.

Aber mal eine andere Frage, dieses POW bzw. die S20 von denen, wie messen die die Energy? Auch nur über einen Shunt oder? Weil ich das mit dem Kalibrieren und der Frequenz nicht so ganz verstehe was im Wiki steht.

Irgendwie juckt es mich ja schon da mal ein Exemplar zu bestellen, aber wenn dann eine um die Energy zu messen.

Gruß
Daniel

HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

Xent

Eigentlich hatte ich auch geplant auf die Teile EasyESP aufzuspielen und über CuxD and die Zentrale anzubinden.

Die S20 sind doch eigentlich ganz gut aufgebaut oder gabs mit denen schonmal Probleme?

Das mit den Baumarktsteckdosen hatte ich eigentlich verworfen.
Habe hier noch einige HomeEasy-Steckdosen, die ich umbauen könnte.
Als ich mich dann über Kondensatornetzteile informiert habe, hab ichs mir dann anders überlegt, da ich ja nicht weiß wieviel mA die liefern können und ob das ausreicht.
Die HomeEasy Dosen haben einmal 24V fürs Relais und 5V für die Elektronik.
Nen 3,3V Pro Mini könnte ich ja an die 5V klemmen.
Vom Platz her müsste dort auch alles rein passen.

Was kann denn alles passieren wenn man aus dem Netzteil zuviel zieht?
Soweit ich das in Erinnerung geht auf jedenfall die Spannung in den Keller. War das alles oder kann da was durch Überlastung abrauchen?

papa

Zitat von: Xent am 19 September 2017, 16:07:52
Wie genau funktioniert das eigentlich mit dem OTA?
Bezieht der Arduino das Update nur von der gepairten Zentrale bzw. FEHM?
Ich nutz ja nur die CCU aktuell, könnte ich das Update auch direkt über einen anderen Arduino mit CC1101 z.B. über die Arduino GUI aufspielen?

Der OTA-Bootloader ermöglicht das Update der Firmware über FUnk. Das geht von FHEM, der CCU2 oder einen HM-CFG-USB. Ich verwende den HM-CFG-USB und flash-ota. Da die ID und die Serial im Bootloader stehen, kann auch eine entsprechend kopilierte Firemware für alle Geräte des selben Types verwendet werden.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire