HM-ES-TX-WM

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

Iceman1101
Beiträge: 8
Registriert: 22.11.2020, 15:17
System: Alternative CCU (auf Basis OCCU)
Wohnort: Markdorf
Kontaktdaten:

HM-ES-TX-WM

Beitrag von Iceman1101 » 22.11.2020, 15:41

Hallo,
habe mir einen S0 Sensor nachgebaut und wollte diesen mit einem Akku betreiben.
Dazu muss der Atmega328p allerdings in den Sleep-Mode und da fängt das Problem an.
Die Ticks/Millis werden nicht mehr richtig gezählt sobald ich den SleepMode verwende.
Mit einer dauerhaften Stromanbindung und Idle Statt Sleep, also
hal.activity.savePower<Idle<> >(hal);
hal.activity.savePower<Sleep<> >(hal);
funktioniert es einwandfrei.

Jetzt habe ich etwas nachgeforscht und denke, das es nur über einen externen Trigger funktioniernen wird.
Kann mir jemand, als Neuling im Thema Arduino, unter die Arme greiffen und mir helfen, wie ich den S0 Sensor dazu bekomme, auf Knopfdruck, bzw. später per Timer, seine Daten an die Zentrale zu senden.

Folgendes müsste dafür ins File:
- Deaktivierung des MSG_Cycles
- Definierung eines Pins als Interrupt
- Ausführen der Sendeoperation bei Pin Interrupt

Gerne aber auch andere Lösungsvorschläge :o
Ziel ist es dasd vohandene Skript von PaPa so zu verwenden, wie es zum laden ist, leider zeigt die Realität hier, dass es so nicht geht wenn man den Sleep Modus aktiviert lässt.

Herzlichen Dank und Gruß vom bodensee
Zuletzt geändert von alchy am 22.11.2020, 16:26, insgesamt 1-mal geändert.
Grund: verschoben aus Homematic - HomeMatic allgemein

papa
Beiträge: 550
Registriert: 22.05.2018, 10:23
Hat sich bedankt: 6 Mal
Danksagung erhalten: 74 Mal

Re: HM-ES-TX-WM

Beitrag von papa » 23.11.2020, 13:59

Irgendwie verstehe ich das nicht. Welches Script willst Du verwenden ?
Wie sieht Dein Sketch zur Zeit aus ?
Der S0 bringt wahrscheinlich viele Impulse pro Sekunde. Damit wird die CPU immer wieder aus dem Schlaf geweckt. Da der Code aber nicht feststellen kann, ob das Wecken durch Ablauf der Sleep-Time oder irgendwas anderes passiert ist, kommt die gesamte Zeitberechnung durcheinander.
Wenn Du eine "ordentliche" Zeit haben willst, musst Du wohl auf eine Lösung mit RTC umsteigen. Die externe RTC tickt immer im Sekundentakt, egal was sonts noch so auf der CPU passiert.
Anfragen zur AskSin++ werden nur im Forum beantwortet

Iceman1101
Beiträge: 8
Registriert: 22.11.2020, 15:17
System: Alternative CCU (auf Basis OCCU)
Wohnort: Markdorf
Kontaktdaten:

Re: HM-ES-TX-WM

Beitrag von Iceman1101 » 26.11.2020, 16:52

Hallo,
danke für die Antwort und folgende Erklärung.
Das S0 skript gibt es hier:
https://github.com/jp112sdl/Beispiel_As ... WM_CCU.ino

Folgendes Passiert. Pulse werden gezählt und zwischendurch geht der Controler in Sleep Mode. Alle 3min sollte er die Pulse übertragen. Er überträgt diese und alle Pulse seit begin.
Die Zentrale nimmt dann die Pulse und zeigt die Aktuelle Leistung an (Bezug 3min), die Gesamtanzahl der Pulse wird einfach mit der Impulszahl in der Homematic verrechnet und zeigt KWh, da dies Zeitlich unabhängig ist passen diese also.
Problem, wenn ich mir die Millis anzeigen lasse, zählen die nicht weiter wenn er schläft und somit hängt das Timing von dem Inpulsen ab. Bei ca 400W (1000Imp/KWh) passt es nahezu, ist aber zufall.
Ohne Sleep Mode, passen die Millis und ich bekomme meinen Wert alle 3min. Aber! Meine Batterie is in 2 Tagen leer, hält mit sleep ca 1 Jahr.
Ich sehe es somit auch, das wir hier von Extern kommen müssen, RTC oder ein 555 Timer.
Ich bin aber noch nicht so gut im Skript drum müsste ich das reguläre Senden nach Millis unterdrücken und nen externen Eingang nehmen (deklarieren) und dann entweder alle 3min oder bei sekunden erst aus 180 Zählen und den Sendevorgang auslösen.

Ich hofee es war verständlich 😊
Meinst du kannst mir beim Skript helfen ☺️

papa
Beiträge: 550
Registriert: 22.05.2018, 10:23
Hat sich bedankt: 6 Mal
Danksagung erhalten: 74 Mal

Re: HM-ES-TX-WM

Beitrag von papa » 27.11.2020, 09:32

Ich versuche mal schnell alles zusammenzufassen. Erst mal brauchst Du eine Hardware mit 32kHZ Quarz drauf z.B. das hier https://asksinpp.de/Projekte/psi/HMSensor/

Dann sind Anpassungen für den RTC-Support im HM-ES-TX-WM_CCU.ino vorzunehmen.

https://github.com/jp112sdl/Beispiel_As ... CU.ino#L27

Code: Alles auswählen

#define MSG_CYCLE (60 * 3)
Die RTC tickt in Sekunden - deshalb sind hier einfach die Sekunden anzugeben.

https://github.com/jp112sdl/Beispiel_As ... CU.ino#L51

Code: Alles auswählen

typedef AskSinRTC<LedType,BatterySensor,RadioType> HalType;
Der HAL muss auf RTC umgestellt werden.

https://github.com/jp112sdl/Beispiel_As ... U.ino#L351

Code: Alles auswählen

actualConsumption = (c * sigs * 10) / (MSG_CYCLE / 60);
https://github.com/jp112sdl/Beispiel_As ... U.ino#L364

Code: Alles auswählen

actualConsumption = (60 * 100000 * c) / (sigs * (MSG_CYCLE / 60));
Zeiten anpassen.

https://github.com/jp112sdl/Beispiel_As ... U.ino#L458

Code: Alles auswählen

rtc.add(sdev.channel(1));
rtc anstatt sysclock benutzen.

Wenn ich jetzt nichts übersehen habe, sollte alles funktionieren.
Anfragen zur AskSin++ werden nur im Forum beantwortet

Iceman1101
Beiträge: 8
Registriert: 22.11.2020, 15:17
System: Alternative CCU (auf Basis OCCU)
Wohnort: Markdorf
Kontaktdaten:

Re: HM-ES-TX-WM

Beitrag von Iceman1101 » 27.11.2020, 15:41

Hallo,
erstnal herzlichen Dank für die schnelle Antwort.
328p habe ichnmit und ohne Quarz, werde beide testen und sehen was es ausmacht. RTC werde ich gleich einen bestellen und das ganze ausprobieren.
Jetzt noch die Frage des Anschlusses des RTC, wenn ich das richtig sehe, liegt der Impuls Pin auf einem der RTC Eingänge.
Kann ich den Impulszähler einfach auf einen anderen Pin legen und in der Definition ändern?

Welchen würden Sie nehmen?
Mein Favoirit: RTC DS3231 - SCL, SDA und 32k Ausgang, so könnte ich auch meine 328p ohne Quarz benutzen (wo kommt der dran 😊 und muss das ins Skript? )
Oder: DS1302 - hat CLK, DAT und RST

papa
Beiträge: 550
Registriert: 22.05.2018, 10:23
Hat sich bedankt: 6 Mal
Danksagung erhalten: 74 Mal

Re: HM-ES-TX-WM

Beitrag von papa » 27.11.2020, 16:06

Wie RTC bestellen ?
Du brauchst eine Platine, die einen 32kHZ Quarz inklusive Kondensatoren vorsieht (Link siehe oben) und musst diesen auch bestücken. Die RTC (Real Time Clock) ist in Software und nutzt den 32kHz Quarz.
Anfragen zur AskSin++ werden nur im Forum beantwortet

Iceman1101
Beiträge: 8
Registriert: 22.11.2020, 15:17
System: Alternative CCU (auf Basis OCCU)
Wohnort: Markdorf
Kontaktdaten:

Re: HM-ES-TX-WM

Beitrag von Iceman1101 » 27.11.2020, 17:31

Hi,
verstanden :)
Ich dachte der RTC kommt extern, war mein Fehler, dennoch werde ich die externen RTC's nehmen um meine 328 ohne Quarz benutzen zu können.
Somit werde ich das gleich mal ausprobieren, Danke

Ich benutze diese und warum kann ich die 328p nicht benutzen? PS: meiner mit Quarz hat 16Mhz drauf
Bild

Beim Testen geht der Controller jetzt kontinuierlich in den Sende Modus!

papa
Beiträge: 550
Registriert: 22.05.2018, 10:23
Hat sich bedankt: 6 Mal
Danksagung erhalten: 74 Mal

Re: HM-ES-TX-WM

Beitrag von papa » 27.11.2020, 19:11

Wenn Du es nicht so machen willst, wie ich gesagt habe, musst Du es selbst rausfinden. Sorry - ich habe dafür nicht genug Zeit.
Anfragen zur AskSin++ werden nur im Forum beantwortet

Iceman1101
Beiträge: 8
Registriert: 22.11.2020, 15:17
System: Alternative CCU (auf Basis OCCU)
Wohnort: Markdorf
Kontaktdaten:

Re: HM-ES-TX-WM

Beitrag von Iceman1101 » 27.11.2020, 21:23

Ok Danke,
hab im obigen link leider keine Bestelldetails gefunden und habe meine Platine soweit mit großer Batterie fertig. Controller ist der gleiche und das Konzept ist von Jerome Pech, wusste nicht das wir hier nicht kompatibel sind, ander Skripts gehen einwandfrei.
Vielleicht finde ich einen Schaltplan, dann finde ich den Unterschied selbst heraus.
Die ursprüngliche Frage war ja auch, wie ich auf einen Eingang hin den Sendebefehl absetze. Damit ich eben den externen RTC benutzen kann. Außerdem ist es auch nicht sicher das es mit der obigen Platine auch geht, wurde ja nicht getestet.
Schade das man bei Jerome anfängt, dann durch einen Link auf diesen Skripten landet um am Ende gesagt zu bekommen, fang von vorne an mit anderer Hardware.

Aber herzlichen Dank soweit, habe schon viel vom Skript verstanden und denke ich bekomme das noch hin!

Gruß Sven

jp112sdl
Beiträge: 7660
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 414 Mal
Danksagung erhalten: 890 Mal
Kontaktdaten:

Re: HM-ES-TX-WM

Beitrag von jp112sdl » 27.11.2020, 21:46

Iceman1101 hat geschrieben:
27.11.2020, 15:41
ein Favoirit: RTC DS3231 - SCL, SDA und 32k Ausgang, so könnte ich auch meine 328p ohne Quarz benutzen (wo kommt der dran und muss das ins Skript? )
Oder: DS1302 - hat CLK, DAT und RST
Ich versteh den Aufwand nicht.
Du nimmst den Pro Mini, schmeißt den 8MHz Schwinger runter und hängst nen 32kHz Quarz (und 2 Kondensatoren) stattdessen dran.
AVR Fuse umstellen natürlich nicht vergessen.
Iceman1101 hat geschrieben:
27.11.2020, 17:31
PS: meiner mit Quarz hat 16Mhz drauf
Die 16MHz arbeiten mit 5V statt mit 3.3V. Auch an den Pin-Pegeln.
Dein CC1101 wird das nicht lange gut finden.
Und die BOD Fuse bei den 16MHz steht auf 4.3V
Iceman1101 hat geschrieben:
27.11.2020, 21:23
Die ursprüngliche Frage war ja auch, wie ich auf einen Eingang hin den Sendebefehl absetze.
Einfach so einen Sendebefehl aufgrund eines externen Interrupts absetzen ist sicher nicht zielführend, da die CCU das Telegramm ja in einem festgelegten Intervall erwartet
https://github.com/AskSinPP/asksinpp.de ... _wm.xml#L2

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

PN sind deaktiviert!

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“