FHEM Forum

Verschiedenes => Bastelecke => MySensors => Thema gestartet von: smoudo am 25 Juli 2017, 19:42:07

Titel: Erfahrungen Multisensor Sketch
Beitrag von: smoudo am 25 Juli 2017, 19:42:07
Ich habe Zähler für Elektro, Wasser und Gas.
Diese befinden sich alle auf Ca. 2 m2 im Anschlussraum

Ist Zustand:
Den Wasserzähler lese ich per Lichtschranke am metallischen Halbmond pro Puls aus.
Mein Stromzähler gibt IR Pulse von sich, die ich mit dem IR lm393 auslese.
Gas ist in Planung, soll ebenfalls per Reflexlichtschranke am reflektierenden Drehrad ausgelesen werden.
Momentan läuft jeder Sensor als separates Node als Arduino Nano

Zukunft/Aufgabenstellung:
Ich habe versucht die Sketche mit einander zu verschmelzen. Dazu gibt's auf youtube auch ein recht gutes Tutorial. Das Problem bei meinem Versuch stellt sich meiner
Meinung nach in der Trennung der Child Id zum selben Sensortyp dar.  (Ich hoffe ich drücke mich verständlich aus) ich bekam komische kompilierfehler, Blicke aber beim Sketch Aufbau aufgrund des selben Typs nicht mehr richtig durch.

Frage:

Hat jemand so etwas schon realisiert?
Ist mysensors dafür überhaupt geeignet?
Für praktische Beispiele währe ich auch hier sehr dankbar!

Grüße

Matze
Titel: Antw:Erfahrungen Multisensor Sketch
Beitrag von: Beta-User am 26 Juli 2017, 09:39:56
Hi Matze,

Zitat von: smoudo am 25 Juli 2017, 19:42:07
Ist mysensors dafür überhaupt geeignet?
die (m.E.) unkomplizierte Möglichkeit, einfache Bausteine zu kombinieren und das dann an FHEM zu schicken, ist gerade der Punkt, den ich an MySensors so schätze :) . Dein Anliegen sollte lösbar sein.

Vorab solltest Du Dir überlegen, wie der Sketch aufgebaut sein sollte, interrupt-basiert oder "nur" per Abtastung in der loop(). Aufpassen solltest Du, wenn Du das loop()-mäßig machst und dann noch weitere Sensorik dranhängen willst, die eine gewisse Zeit braucht, bis es weitergeht (BS18x20, vermutlich auch DHT22 etc.), da könntest Du Pulse verpassen.

Interrupt-basiert hat den Nachteil, dass die Nanos nur 2 PINs haben, denen ein eigener Interrupt zugeordnet ist (die anderen PINs sind gruppenweise weiteren Interrupts zugeordnet, das ginge also auch, ist aber Aufwand).

Vom Vorgehen her würde ich die Zählerdaten jeweils in ein Array packen (also alles, was zum Elektrozähler gehört in den Array-Feldern ['0'], Wasser in [1], Gas in  [2], die kürzesten Pulse (E und Wasser?) auf einen interrupt legen (Je mit einer eigenen Interrupt-Routine) und den dritten eben in der loop() abfragen.

Für die Präsentation und Speicherung der Daten in Arrays kannst Du Dich an diesem (fast zu fancy-) Beispiel orientieren: https://forum.mysensors.org/topic/4847/multi-button-relay-sketch/33# (https://forum.mysensors.org/topic/4847/multi-button-relay-sketch/33#), eventuell noch an dem hier (https://github.com/rejoe2/MySensors-Dallas-Address-ChildID-Consistency/blob/master/Dallas_Addresses_Array_Solution/Dallas_Addresses_Array_Solution.ino).

Als gundlegende Basis (auch, aber nicht nur wegen der Interrupts) würde ich das hier nehmen: https://github.com/mysensors/MySensors/blob/development/examples/EnergyMeterPulseSensor/EnergyMeterPulseSensor.ino (https://github.com/mysensors/MySensors/blob/development/examples/EnergyMeterPulseSensor/EnergyMeterPulseSensor.ino)

Dabei an PIN2 Eletr., PIN3 Wasser und PIN4 Gas.

Wenn Du das Interrupt-basiert machen willst, verdoppelst Du erst mal die onPulse()-Funktion und legst jeweils einen interrupt drauf.

Am einfachsten postest Du den Sketch dann mal, wenn Fragen sind ;) .

Gruß, Beta-User
Titel: Antw:Erfahrungen Multisensor Sketch
Beitrag von: smoudo am 26 Juli 2017, 20:15:36
Muss ich mir mal in Ruhe anschauen. Den Pulse Sensor Sketch verwende ich schon für den elektrozähler,
Genau wie den waterpulse. Den hätte ich dann auch für den gaszähler missbraucht. Mit den digital Pins hatte ich das auch so aufgebaut. Nur das sinnvolle? verschmelzen ergab Probleme. Den Versuch hab ich aber nicht gespeichert. Werd mich nochmal bei Gelegenheit ran setzen!
Sieht für mich auf den ersten Blick ein wenig komplex aus.

Grüße

Matze
Titel: Antw:Erfahrungen Multisensor Sketch
Beitrag von: Beta-User am 27 Juli 2017, 09:46:01
...dann fang' doch erst mal mit der Integration des Wasserzählers an, das ist m.E. nicht so schwierig...

Ein Beispiel (https://github.com/rejoe2/MySensors_Small/blob/master/MyS103/MyS103.ino) mit der Doppelung von Interrupt-Routinen habe ich vor einiger Zeit mal erstellt, allerdings habe ich dazu einen kleinen Vorbehalt: Die Motion-Sensoren habe ich derzeit nicht angeschlossen bzw. der Schwimmerschalter (onMotion1()-ISR) funktioniert an der eingebauten Stelle nicht wie erwartet, daher nicht 100% praxiserprobt ::) , aber ob das Prinzip funktioniert, wirst Du schnell feststellen können.

In Schritt 1 kannst/mußt Du die Variablen ja dann einfach entsprechend nummerieren.
Schritt 2 wäre dann, das in eine Array-Form zu bringen, um die Speicherung der Werte für eine beliebeige Zahl von Sensoren skalierbar zu machen und das Versenden per Schleife zu vereinfachen (Analog dem Beispiel Multi-Relay-Button).
Schritt 3 dann die Erweiterung um Zähler 3 in der Bounce2-Fassung an PIN4 ;) . Wenn Du das hast, kannst Du die restlichen PINs ganz einfach für weitere Zähler verwenden 8) ...