FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Christian. am 03 Juni 2013, 15:29:39

Titel: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
Beitrag von: Christian. am 03 Juni 2013, 15:29:39
Zusammenfassung

Das Problem ist gelöst und in einem Wiki-Artikel (https://github.com/git-developer/fhem-examples/wiki/S0-Z%C3%A4hler-mit-ConfigurableFirmata) beschrieben.
Wer lieber in diesem Forum bleiben möchte und nur an der Lösung und nicht an der Historie interessiert ist, dem empfehle ich als Einstieg Post #107 (http://forum.fhem.de/index.php/topic,13155.msg194507.html#msg194507).




Hallo fhem-Gemeinde,

ich möchte zunächst mich und mein Anliegen kurz vorstellen.

Zu meiner Person: Ich bin habe Erfahrung mit Softwareentwicklung (Java), mit Hardware-Basteleien habe ich aber eigentlich nichts am Hut. Ich besitze einen Lötkolben, von dem ich aber nur unter zwingenden Umständen Gebrauch mache. Ich bin ein Freund offener Systeme und Schnittstellen, deshalb ist mir fhem mit seinem 'integrativem' Charakter sehr sympatisch.

Zum Projekt: Ich möchte mit wenig Aufwand, wenig Kosten und wenig stromhungriger Hardware in die Hausautomation einsteigen, mir dabei aber nichts für zukünftige Projekte verbauen. Konkret geht es darum, meinen Sicherungskasten um einige (ich denke derzeit so an 5) Stromzähler zu ergänzen, um einige Stromkreise meines Haushaltes zu überwachen. Ich habe preiswerte Exemplare zwischen 15€ und 30€ mit LC-Display (Swissnox und Konsorten) gesehen; die bringen eine S0-Schnittstelle mit. Ich betreibe eine Fritz!Box 7390 und habe die über die AVM-Homepage die aktuelle Laborversion samt fhem installiert. Ich suche nun einen Weg, die Stromzähler auszulesen und die Zählerstände zu loggen. Die Fritz!Box steht in der Nähe des Verteilerkastens und könnte per Kabel verbunden werden.

Ich habe einige Stunden mit Web-Recherche verbracht und sehe folgende Möglichkeiten:
1.a) S0-Sensor von ELV (ESA1000-WZ-S0 oder S0-Sensor für ESA2000 oder EM 1000-HSM) mit Funksender 868MHz
1.b) CUL (oder alternativ CUNO) von busware.de als Funkempfänger per USB in die 7390
Kosten: 20€ (S0-Zähler) + 40€ (Sender) = 60€ je Zähler, zusätzlich einmalig 50€ (CUL); für 5 Zähler also 350€.

2.a) 1-Wire Zählermodul von eservice-online für 2 S0-Zähler
2.b) 1-Wire-Busmaster-USB-Stick von eservice-online (oder alternativ CUNO) per USB in die 7390
Kosten: 20€ (S0-Zähler) + 50€/2 (Sender) = 45€ je Zähler, zusätzlich einmalig 40€ (Busmaster); für 5 Zähler also 265€.

3.a) SD0-Erweiterung für 4 S0-Zähler an einem Raspberry Pi von busware.de
3.b) Raspberry Pi (anstelle der Fritz!Box)
Kosten: 20€ (S0-Zähler) + 70€/4 (Sender) = 37,50€ je Zähler, zusätzlich einmalig 50€ (Raspberry Pi); für 5 Zähler also theoretisch 200€.
Problem: nur 4 Zähler möglich

4) AVR Net-IO mit 4 digitalen Eingängen für je einen S0-Zähler; per USB oder LAN an die 7390
Kosten: 20€ (S0-Zähler) je Zähler, zusätzlich einmalig 30€ (Net-IO); für 5 Zähler also theoretisch 130€.
Problem: nur 4 Zähler möglich

5) Arduino Mega2560 mit 54 digitalen Eingängen für je einen S0-Zähler; per USB an die 7390
Kosten: 20€ (S0-Zähler) je Zähler, zusätzlich einmalig 30€ (Arduino); für 5 Zähler also 130€.

Mein klarer Favorit ist Option 5, weil es die günstigste Lösung ist und viele Möglichkeiten für die Zukunft bietet. Da ich aber noch überhaupt keine Erfahrung habe, bitte ich euch um eine Einschätzung. Ist etwas falsch? Habe ich etwas übersehen? Was denkt ihr?

Christian
Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
Beitrag von: jodamm am 23 Juni 2013, 00:00:29
Hallo Christian,
Ich bin gerade dabei einen Arduino Uno an einen S0 Zähler anzuschliessen. Angefangen hat es damit das mein EM1010PC immer mal wieder Empfangsprobleme hat. Da ich noch einen 868MHz Empfänger hier liegen hatte, habe ich mir gedacht, ich bastel endlich mal was damit. Der Arduino gibt sich dabei als CUL aus und gibt die empfangenen Pakete an FHEM weiter, die dann mit dem CUL_EM Modul ausgewertet werden. Dieser Teil funktioniert schon, jetzt soll aber noch ein S0 Zähler angeschlossen werden. Ich habe vor die Auswertung der Impulse im Arduino zu machen und dann alle 5 Minuten eine Nachricht zu senden, die wie die von einem EM1000 Sensor aufgebaut ist. Dann brauche ich nichts in FHEM anzupassen und das sollte dann auch mit der FB funktionieren. Ob das so klappt, wie ich mir das vorstelle, werde ich wohl erst gegen Ende der Woche rausfinden. Wenn es funktioniert, lässt sich das sicher auch auf 5 Zähler erweitern.

Joachim
Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
Beitrag von: Christian. am 23 Juni 2013, 22:23:21
Hallo Joachim,

danke für die Info. Nachdem keine Reaktion auf meinen Eintrag kam, habe ich inzwischen selbst Hand angelegt und ein kleines Arduino-Skript sowie ein passendes FHEM-Modul geschrieben. Im Arduino-Sketch geht das Signal wahlweise per Interrupt ein oder wird über Polling (Busy Waiting) abgefragt; daraus berechne ich die Dauer und sende sie an die serielle Schnittstelle. Das FHEM-Modul wird automatisch beim Eintreffen von Daten aktiv und wandelt die Dauer in eine passende Einheit, z.B. Kilowattstunden, um. Ich werde das Ergebnis hier veröffentlichen, wenn ich fertig bin.
Titel: Einbindung von S0-Zählern über Arduino
Beitrag von: Christian. am 24 Juni 2013, 22:28:42
Eine weitere Möglichkeit:

6.a) USB/Serial-Adapter mit 1 Leitung für einen S0-Zähler
6.b) USB-Hub, z.B. 13-Port
Kosten: 20€ (S0-Zähler) + 10€ (Adapter) = 30€ je Zähler, zusätzlich einmalig 15€ (USB-Hub); für 5 Zähler also theoretisch 165€.
Titel: Einbindung von S0-Zählern über Arduino
Beitrag von: Christian. am 24 Juni 2013, 23:37:17
Ich habe mich für Möglichkeit 5, die Anbindung über einen Arduino, entschieden. Meine Erfahrungen und die entstandene Software möchte ich hier mit Euch teilen.

Da die notwendige Software teils auf dem Arduino und teils in fhem läuft, habe ich mir zunächst Gedanken über die Aufteilung gemacht. Ich denke, die Hauptarbeit sollte in fhem und nicht auf dem Arduino laufen. Zum einen dürfte die CPU der Fritz!Box leistungsstärker sein als der ATmega-Prozessor des Arduino; zum anderen darf der Arduino nicht lange beschäftigt sein, um keine Signale zu verpassen.

Arduino
Hier läuft hier das kleine Programm impcount, das auf digitalen Ports lauscht, beim Anliegen eines Signals die Dauer seit dem vorigen Signal berechnet und diese auf die serielle Schnittstelle schreibt.

Das Lauschen könnte über Polling ("Busy Waiting") implementiert werden, d.h. das Programm prüft regelmäßig, ob ein Signal anliegt. Der Arduino kennt aber auch das Konzept von Interrupts: damit wird automatisch beim Anliegen eines Signals eine Funktion aufgerufen. Interrupts gibt es nur für ausgewählte Pins, die von der Arduino-Hardware abhängen. Ich habe mich für einen Mega2560 entschieden, dieser erlaubt 6 Interrupt-Pins. Die kleineren Modelle haben 2, beim Modell Due sind alle Pins Interrupt-fähig.

Das Programm impcount verwendet Interrupts, sofern der Zähler an einem dafür geeigneten Pin angeschlossen ist. An allen anderen Pins wird per Busy Waiting verfahren. Wenn man nicht mehr Zähler anschließen möchte als Interrupt-Pins zur Verfügung stehen, kann man natürlich die loop()-Funktion auch anderweitig nutzen.

fhem
Jetzt müssen die Werte von der seriellen Schnittstelle noch in fhem eingelesen werden. Ich habe folgende Module gefunden, die mir hilfreich erscheinen.

ECMD
Mit ECMD (http://www.fhemwiki.de/wiki/ECMD) habe ich es geschafft, die Daten vom Arduino abzufragen. Ich war damit aber nicht ganz zufrieden, weil ECMD für "Request/Response-like communication" gedacht ist. Das heißt, fhem muss regelmäßig aktiv Werte vom Arduino abfragen. Dieses Vorgehen ist völlig in Ordnung, wenn ein Sensor dauerhaft einen Wert liefert, wie z.B. ein Thermometer. Für Impulssignale passt es aber leider nicht, weil man zur richtigen Zeit abfragen müsste. Man kann natürlich die Daten auch auf dem Arduino zwischenspeichern; das Programm dort wird dadurch aber komplexer, und man muss sich dann auch um Pufferüberläufe kümmern, auf dem seriellen Port lauschen, etc.

WHR962
Im Foreneintrag zum Modul WHR962 (http://forum.fhem.de/index.php?topic=10290.msg57862#msg57862) habe ich gelernt, dass man wohl auch in FHEM automatisch auf das Eintreffen von Daten über die serielle Schnittstelle reagieren kann. Ich habe das Modul als Vorlage genommen und möchte an dieser Stelle herzlich beim Autor, Joachim, für die Veröffentlichung bedanken.

IMPCOUNT
Mit Hilfe von WHR962 habe ich ein Modul namens IMPCOUNT geschrieben, das auf meinen Anwendungsfall passt; es ist so weit verallgemeinert, dass es auch für andere impuls-basierte Zähler verwendet werden kann. Es passiert eigentlich nicht viel: die Werte des Arduino werden gepuffert, auf Wunsch umgerechnet und gespeichert. Details zur Implementierung sind im Modul dokumentiert.

Konfiguration
Was jetzt noch fehlt, sind ein paar Einträge in der fhem.cfg und Skript zum Zeichnen von Diagrammen namens my_impcount.gplot.

Ich habe alle notwendigen Dateien an diesen Beitrag angehängt; darunter ist auch ein Arduino-Sketch zum Testen namens s0_dummy_sender. Es gibt in regelmäßigen Abständen zufällige Werte aus, sodass das fhem-Modul IMPCOUNT auch ohne S0-Zähler getestet werden kann.


Hinweis: impcount hat ein neues Zuhause (https://github.com/git-developer/impcount).



Da das hier meine ersten Erfahrungen mit fhem und Arduino sind, bin ich dankbar für Feedback und Verbessungsvorschläge. Vielleicht macht es inzwischen auch Sinn, diesen Beitrag in ein anderes Unterforum zu verschieben.
Titel: Aw: Einbindung von S0-Zählern über Arduino
Beitrag von: Christian. am 29 Juni 2013, 11:25:19
ZitatHallo Christian,

ich habe Deine Ausführungen über die Einbindung von mehreren s0-Zählern mit Interesse gelesen.

Ich selber habe die Forums-fhem-Version auf einer Fritzbox 7390 laufen. Über eine HM-Lan-Schnittstelle werden verschiedene Devices(Raumthermostate, Heizkörperventile, Drehgriff- und Fensterkontakte) mit fhem überwacht und gesteuert. Über eine 1-wire-Busmaster-Schittstelle habe ich Thermometer zu Testzwecken eingebunden, da ich bis zu Ihren Ausführungen noch die Vorstellung hatte, über den 1w-Bus mehrere Verbrauchszähler in fhem einzubinden und die geloggten Daten in eine log-Datei schreiben zu lassen. Zurzeit logge ich die Impulse über eine USB-Serielle-Schnittstelle(solarview@Fritzbox von Michael Richter). Hier ist aber das gleiche Problem wie beim AVR-Net, es können nur bis zu 4 s0-Zähler geloggt werden. Auch habe ich bereits mehrfach und stundenlang im Internet nach einer preiswerten, fertigen Lösung gesucht. Bin aber bisher nicht fündig geworden. Zwischenzeitlich hatte ich auch schon an einen Raspberry PI gedacht, aber gemäß Ihrer Aussage ist der auch auf 4 s0-Schnittstellen begrenzt.
Nun lese ich das Sie mehrere s0-Schnittstellen über den Arduino Mega 2560 auslesen. Ich habe wie Sie keine Erfahrung mit Hardwarebasteleien, ich besitze nicht mal einen Lötkolben. Auch Erfahrung im Schreiben von Software ist nicht vorhanden, daher benötige entsprechende Unterstützung bei meiner Herausforderung.
Ich möchte im ersten Schritt 4 s0-Wechselstromzähler und 3 Reed-Kontakte loggen, d.h. bei jedem Impuls der jeweiligen s0-Schnittstelle und Reed-Kontakt benötige ich nur einen Zeitstempel. Dieser Zeitstempel, der einen Impuls repräsentiert, soll für jede Schnittstelle in eine log/csv-Datei gespeichert werden. Diese log-Datei soll von 0 bis 24 Uhr geschrieben werden, anschließend beginnt ein neuer tag. Während des Schreibens bzw. danach kann diese Datei mit fhem bzw. Excel ausgewertet werden. Ich bin der gleichen Meinung wie Sie, dass die Auswertung der Impulse extern erfolgen sollte und den Arduino nur für die Überwachung der Pins einsetzen sollte. Da ich mehr als 6 Zähler einsetzen möchte, ist wohl der Arduino Due die richtige Wahl.

Für mich ergeben sich nunmehr folgende Fragen.
1. Wieviele s0-Schnittstellen können an den Arduino 2560 angeschlossen werden?
2. Ist es sinnvoll Pins über polling zu überwachen oder mittels einer Interrauptfunktion die Impulse zu loggen?
3. Wie sind die Ausgänge der s0-Zähler und Reddkontakte(jeweils 2 Draht) auf den Arduino anzuschließen?
4. Wie wird der Arduino an die Fritzbox angeschlossen, mittels Lan oder USB?
5. Ist der Arduino noch zu programmieren?
6. Wie ist Ihr Programm für 6, 7 oder 8 s0-Schnittstellen zu verändern und wie muß das Programm bezgl. der einzeln zu schreibenden log-Dateien geändert werden?
7. Wie ist die Programmierung auf den Arduino zu installieren?

Sollte das mit mehreren s0-Schnittstellen auf einem Arduino möglich sein ist m.E. ein Counter(DS2423 bzw. eine Softwarelösung) nicht mehr notwendig und ich kann den 1w Bus nur für Temperaturmessungen einsetzen.
Dein Vorhaben klingt meinem ganz ähnlich. Das sollte aus meiner Sicht machbar sein.

ZitatIch möchte im ersten Schritt 4 s0-Wechselstromzähler und 3 Reed-Kontakte loggen, d.h. bei jedem Impuls der jeweiligen s0-Schnittstelle und Reed-Kontakt benötige ich nur einen Zeitstempel. Dieser Zeitstempel, der einen Impuls repräsentiert, soll für jede Schnittstelle in eine log/csv-Datei gespeichert werden.
Meine Implementierung schreibt pro Zähler und Tag eine Log-Datei. Neben dem Zeitstempel wird auch noch der Stromverbrauch ausgegeben. Das passt also.

ZitatDa ich mehr als 6 Zähler einsetzen möchte, ist wohl der Arduino Due die richtige Wahl.
Das würde auch gehen. Das Modell Due hat den Vorteil, dass alle Pins Interrupt-fähig sind. Es ist aber zu beachten, dass die Betriebsspannung 3,3V statt 5V (//arduino.cc/de/Main/ArduinoBoardDue) beträgt.

ZitatZwischenzeitlich hatte ich auch schon an einen Raspberry PI gedacht, aber gemäß Ihrer Aussage ist der auch auf 4 s0-Schnittstellen begrenzt.
Diese Aussage kann ich so allgemein formuliert nicht stehen lassen: da der Pi ein vollständiger Computer ist, kann man ihn sicher auch so erweitern, dass man mehr als 4 Signale anschließen kann. Meine Aussage bezieht sich auf ein Modul, dass bereits fertig im Internet bezogen (//shop.busware.de/product_info.php/cPath/1/products_id/82) werden kann. Möglicherweise gibt es hier noch Alternativen. In Summe dürfte ein Pi mit Zubehör teurer sein als die Arduino-Variante.

Zu Deinen Fragen:
Shields erweitern möchtest, benötigen die je nach Shield einige davon.
  • Das hängt von mehreren Faktoren ab. Grundsätzlich ist die Programmierung ohne Interrupts einfacher. Der Arduino kann aber keine Aufgaben parallel ausführen. Er kann also entweder einen Pin auf ein Signal hin abhören oder ein Signal verarbeiten. Während er mit der Verarbeitung beschäftigt ist, bekommt er nichts von neuen Signalen mit. Es können also Signale verlorengehen, wenn
    • die Verarbeitung sehr lang dauert,
    • die Anzahl der Impulse sehr hoch ist,
    • die Dauer der Impulse sehr kurz ist.
    Diesem Problem kann man mit Interrupts begegnen. Wenn ein Gerät an einem Interrupt-fähigen Pin angeschlossen ist und man eine sog. Interrupt Service Routine (ISR) dafür angegeben hat, wird die Verarbeitung sofort unterbrochen, sobald ein Signal anliegt. Dann wird die ISR ausgeführt. Wenn während der Ausführung einer ISR ein weiterer Interrupt auftritt, wird dieser gepuffert und anschließend durchgeführt. Der Puffer ist nur begrenzt groß, d.h. theoretisch können auch hier Signale verloren gehen.
    Die gute Nachricht: in meinen Tests waren all diese Überlegungen irrelevant. Die Impulsdauer meiner Stromzähler beträgt ca. 60ms. Das ist eine Menge Zeit, viel länger als die Verarbeitung für alle Pins zusammen dauert. Deshalb würde ich für meinen Anwendungsfall auch ohne Interrupts auskommen.
  • Der Stromzähler hat zwei Kontakte, S0+ und S0-. S0+ wird mit einem digitalen Pin des Arduino verbunden, S0- mit Masse. Reed-Kontakte habe ich nicht im Einsatz, da wird es aber vermutlich ähnlich sein.
  • Ich habe mich für USB entschieden, weil ich dafür kein Ethernet-Shield für den Arduino kaufen musste. Es wäre übrigens auch denkbar, stattdessen über Ethernet zu kommunizieren. Das Arduino-Programm müsste dafür nur minimal angepasst werden. Ich kann aber nicht sagen, wie es mit der automatischen Benachrichtigung des FHEM-Moduls IMPCOUNT durch den FHEM-Kern aussieht.
  • Auf den Arduino muss das Programm impcount.ino hochgeladen werden.
  • Im aktuellen Zustand wird eine Log-Datei pro Pin und Tag erstellt. Für weitere Pins sind folgende Änderungen notwendig.
    Arduino: In der Liste der S0-Pins (Zeile 51 in impcount.ino) müssen alle zu überwachenden Pins eingetragen werden. Der Inhalt der Liste "10, 2, 3, 17, 18" ist ein Beispiel für 5 Zähler. Für 3 weitere Zähler an den Pins 19, 20 und 21 wäre die Zeile zu erweitern inconst byte          S0_PINS[] = { 10, 2, 3, 17, 18, 19, 20, 21 };
  • FHEM: Für jeden Pin <P> wird die FHEM-Konfiguration fhem.cfg erweitert umdefine log_arduino_pin_<P> FileLog /var/log/fhem/arduino-pin-<P>-%Y-%m-%d.log impulse_counter:(set|id-<P>).*
    attr log_arduino_pin_<P> room Arduino
    Beispiel für ein Gerät an Pin 19:define log_arduino_pin_19 FileLog /var/log/fhem/arduino-pin-19-%Y-%m-%d.log impulse_counter:(set|id-19).*[/list]
  • Das geht mit der Arduino-Software (//arduino.cc/en/main/software). Ich habe die Software installiert und danach den Arduino per USB an den PC angeschlossen. Unter Windows musste ich dann den USB-Treiber installieren, der im Arduino-Software-Verzeichnis unter drivers liegt. Danach kann man die Software starten und das Programm impcount.ino öffnen. Im Menü unter Tools / Serieller Port muss jetzt der Anschluss ausgewählt werden (es sollte nur einen geben). Dann kann man das Programm per Knopfdruck hochladen. Über den Menüpunkt Tools / Serial Monitor kann man nun sehen, wie die Signale eingehen.[/list]
  • Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: fhainz am 29 Juni 2013, 18:17:01
    Hallo!

    Ich bin auch schon länger auf der suche nach einer Möglichkeit meinen Stromverbrauch mitzuloggen. Das mit dem 1-phasigen S0 Zählern (amazon < 20€) und der arduino mega ist wirklich eine günstige Möglichkeit.  Mein Problem ist das mein Raspi, auf dem fhem läuft, nicht in der nähe des Verteiler ist. Gibts eine möglichkeit das ganze via wlan zum raspi zu übertragen?

    Grüße
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Puschel74 am 29 Juni 2013, 18:59:51
    Hallo,

    Andere Möglichkeit (so hab ichs bei mir gelöst - zwar mit einem AVR-NET-IO aber das sollte egal sein):

    Der Arduino benötigt ein Netzteil für die Spannungsversorgung
    Der Zähler ist doch im Verteilerkasten
    Der RasPi benötigt ein Netzteil für die Spannungsversorgung
    (das war jetzt nur rhetorisch ^^)

    Im Zählerkasten vom Elektriker seines Vertrauens einen devolo Hutschienenadapter (3-phasig) installieren lassen und eine Hutschienen-Steckdose (gibt es relativ günstig).
    Auf den Adapter (3-phasig) kann zur Not auch verzichtet werden da die 3 Phasen mit viel Glück auch das Signal einkoppeln können.
    Die Signalübertragung wird durch diesen Adapter aber auf alle Fälle besser.
    Am RasPi einen devolo dLan500 davor stecken und das Netzwerkkabel in den dLan-Adapter und den Arduino (bei vorhandenem Hutschienenadapter) die Spannungsversorgung über die Hutschienensteckdose abgreifen und am devolo-Adapter das Netzwerkkabel anschliessen, oder (bei verzicht auf den Hutschienenadapter) an der Hutschienensteckdose ebenfalls einen dLan500 nehmen und dort das Netzwerkkabel des Arduino dran.

    Vorteil des dLan Hutschienen-Adapters:
    Man hat auf einen Schlag an jeder Steckdose im Haus, Garten, Garage, Dachboden, sprich an jeder Steckdose die von diesem Zählerkasten abgenommen wird Netzwerkzugriff per dLan-Adapter.
    Der Zähler "sperrt" die Signale nach aussen und wenn nicht kann man am dLan-Netzwerk immer noch die Verschlüsselung einschalten.
    Dann können sich nur authorisierte Geräte anmelden.

    Ich betreibe über einen devolo dLan 500 tripple unseren Fernseher, Blue-Ray-Player und MediaPlayer im Schlafzimmer.
    Ein Stream von unserer Netzwerkfestplatte im Keller ist locker drin und auch maxdome in HD läuft einwandfrei.
    Anders hätte ich keinen Netzwerkanschluss in unser Schlafzimmer bekommen.

    Mein AVR-NET-IO hängt auf der Terrasse an einer Aussen-Steckdose mit einem dLan-Adapter und liefert mir brav die Bodenfeuchte der Sensoren an den Haupt-RasPi-FHEM im Obergeschoss.
    Ein RasPi hängt im Heizraum an so einer dLan-Steckdose, sammelt die Temperaturen von 3 I2C-Sensoren und kümmert sich um die Datenbank.
    Das alles läuft einwandfrei.

    Nur mal so als Gedankenstoss.

    Grüße

    Edith: Was ich noch erwähnen wollte.
    Vom Hutschienenadapter im Zählerkasten geht bei mir ein Netzwerkkabel direkt an den Switch und dieser ist per Lan mit dem Router verbunden.
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: fhainz am 29 Juni 2013, 19:36:41
    Hallo!

    An die Powerline Dinger hab ich noch gar nicht gedacht. Gute Idee um lan in den Verteiler/Sicherungskasten zu bekommen. Verstehe ich das richtig, ich kauf mir einen dLAN 200 AVplus an den stöpsle ich das LAN Kabel vom Router dran. An das Hutschienen Modul kommt dann ein lan kabel zum arduino mit ethernet shield. Da brauch ich die Hutschienen Steckdose nicht.
    Kann das so klappen?
    Titel: Aw: Einbindung von S0-Zählern über Arduino
    Beitrag von: nusselt am 29 Juni 2013, 19:59:15
    Hallo Christian,

    vielen Dank für die zügige Beantwortung meiner Fragen. Ich denke, daß damit meine Herausforderung bei entsprechender Umsetzung gelöst sein sollte.

    Aufgrund Deiner Ausführung (alle digitalen Pins sollten theoretisch für s0 nutzbar sein, Pins für Shields werden nicht benötigt) werde ich mich wohl für einen Arduino 2560 entscheiden.

    Ob ich die Signale der Schnittstellen mittels polling oder Interrupt-Routine verarbeite, muß ich noch entscheiden. Nur einen Zeitstempel zu vergeben und diesen in eine Datei zu schreiben, dürfte dem Arduino kaum Zeit kosten.

    Die Anzahl der eingehenden Impulse ist auch nicht sehr hoch (Wasseruhr= 1 Imp/ltr, Gaszähler= 1 Imp/100 ltr, 4 Wechselstromzähler(B+G)= 1.000 Imp/kWh). Die Dauer der Impulse liegt bei den Wechslstromzählern bei ca. 90 ms. Für die Reedkontakte ist mir nur die Schaltzeit bekannt und liegt bei ca. 1ms. Ich denke mir, daß das Abhören der Pins mittels polling somit möglich sein sollte.

    Für die  D0-Schnittstelle(SMA für Hager ehz)= 10.000 Imp/kWh. Wie kann ich diese Schnittstelle mit dem Arduino auslesen?

    Der Anschluß an eine USB-Schnittstelle z.B. Fritzbox 7xxx kommt mir gelegen, da dann die Spannungsversorgung der Schnittstellen nicht extern erfolgen muß.

    Das Deine log-Dateien pro PIN und Tag erstellt werden, entspricht meinen aktuellen log-Dateien (s.a. Datei). Die Auswertung meiner aktuellen log-Dateien erfolgt mit Excel (s. a. Beispiel).

    Mit Deiner Lösung sollte es mir nun möglich sein alle meine Schnittstellen abzufragen und meine Verbräuche wie gewohnt täglich, monatlich und jährlich grafisch darzustellen.

    Ich werde mir jetzt den Arduino Mega 2560 bestellen, alle Schnittstellen anschließen, die Software ergänzen, anpassen und anschließend aufspielen.

    Bei Fragen werde ich mich wieder wie gehabt hier im Forum melden und wenn dann alles geklappt hat, werde ich berichten.







    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Puschel74 am 29 Juni 2013, 20:01:46
    Hallo,

    ZitatdLAN 200 AVplus an den stöpsle ich das LAN Kabel vom Router dran

    Ich hab diese Variante nicht im Einsatz - bei meinem Bruder funktioniert das aber (mehr schlecht als recht auch über alle 3 Phasen).

    ZitatAn das Hutschienen Modul kommt dann ein lan kabel zum arduino mit ethernet shield.

    Genau so.

    ZitatDa brauch ich die Hutschienen Steckdose nicht.

    Hätte den Vorteil das du den Sicherungskasten wieder zumachen kannst (also die Tür).
    Oder wo steckst du das Netzteil für den Arduino ein?

    Was evtl. auch noch gehen würde (das muss ich mal versuchen).
    Den Router per dLan-Adapter ans Stromnetz bringen.
    Im Sicherungskasten einen dLan-Adapter und einen Hutschienenadapter montieren und beide per Netzwerkkabel verbinden.
    Der Router sendet das Signal über den dLan-Adapter per Stromnetz in den Sicherungskasten (logischerweise) - von dort über den dLanAdapter an den Hutschienen-Adapter und der koppelt das Signal auf alle 3 Phasen.
    Ich vermute dann aber Probleme mit anderen dLan-Adaptern die an der selben Phase hängen wie der Router-dLan-Adapter da die das Signal dann zweimal bekommen.
    Aber Versuch macht kluch ^^

    Grüße

    P.S.: So eine Hutschienen-Steckdose ist nie verkehrt im Sicherungskasten ;-)
    Ich hab 2 davon im Haupt-Sicherungskasten im Keller und jeweils eine in den Etagen-Sicherungskästen.
    Ja. Ich bin Elektriker und hab lieber dreimal etwas zuviel als auch nur einmal zuwenig ^^
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: justme1968 am 29 Juni 2013, 20:07:42
    noch ein denkanstoss falls es mit netzwerk und usb im sicherungkasten aus irgendeinem grund nicht geht (so wie bei mir :): nimm einen panstamp und mach es per funk. zur not sogar ohne hutschinen steckdose per batterie.

    habs grad eben probehalber mal zusammengesteckt (Link (http://forum.fhem.de/index.php?topic=13500.0)) und er zählt munter vor sich hin. grad zwar nur eine 50 watt birne aber immerhin :)

    (siehe Anhang / see attachement)


    gruss
      andre

    mit den dlan teilen habe ich beim mir nur so bescheidene erfahrungen gemacht das das sie direkt wieder zurück gegangen sind. und nur zum zählen wären die mir auch zu teuer.
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Puschel74 am 29 Juni 2013, 20:09:48
    Hallo,

    @nusselt

    ZitatDer Anschluß an eine USB-Schnittstelle z.B. Fritzbox 7xxx kommt mir gelegen, da dann die Spannungsversorgung der Schnittstellen nicht extern erfolgen muß.

    Das würde ich etwas vorsichtig betrachten.
    Eine externe Spannungsversorgung für USB-Geräte ist nie verkehrt.

    Ich kann nur von meienr Erfahrung sprechen.
    Laut Spezifikation darf am USB-Port 500 mA bezogen werden (USB3.0 evtl. auch höher meine ich wenn es unterstütz wird).

    USB-Festplatten haben gerne mal ein "Doppel"-USB-Kabel beiliegend um 2 Ports anzapfen zu können.
    Selbst an manchen Mainboards habe ich USB-Festplatten nur ans laufen gebracht nachdem ich einen aktiven Hub angeschlossen hatte.

    Daher würde ich die FritzBox evtl. nicht unnötig mehr belasten als notwendig.
    Es kann klappen - muss aber nicht.
    Besser einen billigen aktiven USB-Hub dazwischen und du hast deine Ruhe.

    justmy2cents

    Grüße
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Puschel74 am 29 Juni 2013, 20:12:34
    Hallo,

    @andre

    Kannst du kein Netzwerkkabel in den Sicherungskasten bringen oder warum geht das bei dir nicht?

    Wie gesagt - ich versuch mal die Variante mit
    vom Router per dLan-Adapter über Strom in den Sicherungskasten und dann per Hutschienenadapter auf die restlichen 2 Phasen.
    Voraussetzung dafür: der dLanAdapter am Router und im Sicherungskasten hängen an der selben Phase.

    Grüße

    Edith: Ok, grad deinen ganzen Beitrag gelesen ^^
    Also mit den devolo-Dingern habe ich bisher (bei mir und meinem Bruder) nur gute Erfahrungen gemacht.
    Wie gesagt - Fernseher dran und HD-Stream von maxdome klappt einwandfrei.
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: fhainz am 29 Juni 2013, 20:13:09
    Zitat von: Puschel74 schrieb am Sa, 29 Juni 2013 20:01Was evtl. auch noch gehen würde (das muss ich mal versuchen).
    Den Router per dLan-Adapter ans Stromnetz bringen.
    Das hab ich vorher gemeint.

    Zitat von: Puschel74 schrieb am Sa, 29 Juni 2013 20:01Im Sicherungskasten einen dLan-Adapter und einen Hutschienenadapter montieren und beide per Netzwerkkabel verbinden.
    Koppelt der Hutschienenadapter nur das Signal auf alle 3 Phasen? Oder kann man davon auch ein Lan Signal abgreifen?

    Zitat von: Puschel74 schrieb am Sa, 29 Juni 2013 20:01P.S.: So eine Hutschienen-Steckdose ist nie verkehrt im Sicherungskasten ;-)
    Ich hab 2 davon im Haupt-Sicherungskasten im Keller und jeweils eine in den Etagen-Sicherungskästen.
    Ja. Ich bin Elektriker und hab lieber dreimal etwas zuviel als auch nur einmal zuwenig ^^
    Bin auch Elektriker/Verteilerbauer (ich kenn das mit den reserven ;) ) aber ich baue größere Anlagen. Kann ich ein z.B. ein altes Netzteil anstecken (für die Spannungsversorgung) und die Türe geht trotzdem noch zu? Hab das bisher noch nie ausprobiert
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: justme1968 am 29 Juni 2013, 20:20:29
    der kasten um den es in diesem fall geht ist leider nicht in der nähe von irgendwelchen netzwerk komponenten. ohne dreck und umbau geht da nix.

    und wie gesagt: neben der schlechten erfahrung... die dinger sind teuer und es sind zwei nötig. von den panstamps brauche ich nur einen einzigen. noch nicht mal einen ethernet shield. und sogar wenn ich den empfänger auf fhem seite noch nicht hätte wäre es unterm strich günstiger als zwei dlan teile.

    gruss
      andre
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Puschel74 am 29 Juni 2013, 20:20:44
    Hallo,

    den Router per dLan anbinden klappt definitiv.
    Mein Bruder muss das noch so machen da sein "Elektriker" ein Spass-Elektriker ist (leider wohn ich mittlerweile 900 km von meinem Bruder entfernt sonst wäre das schon längst erledigt).

    ZitatOder kann man davon auch ein Lan Signal abgreifen?

    Da mein Fernseher nur per dLan angekoppelt ist und das senden ins Internet klappt muss der wohl auch das Netzwerksignal an den Router weiter leiten ;-)
    Also ja - das Signal kann dort auch abgegriffen werden.

    Zitatund die Türe geht trotzdem noch zu?

    Das kommt auf den Abstand zwischen Adapter und Türe an oder besser gesagt auf die Größe des Netzteils ;-)
    Ich hab, wie geschrieben, 2 Hutschienen-Steckdosen im Zählerkasten und die Türe lässt sich wunderbar schliessen.
    Ich hab aber auch keine "alten" Steckernetzteile.

    Was heisst bei dir alt?
    So richtig alt mit Eisenkern?
    Dann wirf die raus - die brauchen mehr Strom als das sie umsetzen.

    Grüße
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Puschel74 am 29 Juni 2013, 20:25:11
    Hallo,

    @andre
    Ok, da gebe ich dir recht - preislich ist es nicht gerade lustig.

    Ich hab aber darüber mittlerweile, wie schon geschrieben, einen Samsung Fernseher, einen Samsung Blue-Ray-Player, einen Conrad Media-Player (im Schlafzimmer) und einen
    Blue-Ray-Player im Wohnzimmer damit ins Netzwerk eingebunden.
    Der CUNO in der Garage läuft auch über dLan.
    Alles bisher tadellos und einwandfrei.

    Klar konnte ich ein Netzwerkkabel direkt vom Router zum Hutschienen-Adapter im Zählerkasten ziehen - diese Möglichkeit haben leider nicht alle.

    Grüße
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 29 Juni 2013, 20:26:59
    Zu fhainz:

    Wie zuvor beschrieben (Antwort auf Frage 4 meines vorigen Beitrags) habe ich bei mir zwar USB im Einsatz, die Umstellung auf Ethernet ist aber vermutlich nicht schwer. Ob Du Hardware-seitig LAN, WLAN, DLAN oder was ganz anderes einsetzt, hängt von Deinen Begebenheiten ab, hier sind ja schon einige Anregungen gekommen.
    Software-seitige Anpassungen:
    Arduino: Anpassung der Initialisierung und des Sendens anpassen (alle Vorkommen von Serial)
  • FHEM: Das Modul IMPCOUNT ist Geräte-unabhängig, ich sehe eigentlich keinen Anpassungsbedarf. [/list]Ich kann nur nicht sagen, ob FHEM beim Eintreffen eines Ethernet-Frames (oder IP-Paketes) das Modul genauso automatisch informiert wie das über die serielle Schnittstelle passiert.
  • Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: fhainz am 29 Juni 2013, 20:28:07
    Zitat von: Puschel74 schrieb am Sa, 29 Juni 2013 20:25Klar konnte ich ein Netzwerkkabel direkt vom Router zum Hutschienen-Adapter im Zählerkasten ziehen - diese Möglichkeit haben leider nicht alle.

    Also dient dieser doch zum Verteilen des Signals auf die 3 phasen und nicht zum Abgreifen eines lan Signals im Sicherungskasten? Sry ich glaub ich steh auf der Leitung.


    Edit:
    panStamp kenn ich bisher nicht. Ich kenn mich eigentlich mit den Arduinos auch nicht aus sprich eigene Script dafür schreiben kann ich derzeit nicht und ich würde das script hier verwerden.
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: nusselt am 29 Juni 2013, 20:44:20
    [quote title=Puschel74 schrieb am Sa, 29 Juni 2013 20:09]Hallo,

    @Puschel74

    Daher würde ich die FritzBox evtl. nicht unnötig mehr belasten als notwendig.
    Es kann klappen - muss aber nicht.
    Besser einen billigen aktiven USB-Hub dazwischen und du hast deine Ruhe.


    Du hast recht, sicher ist sicher, werde ich berücksichtigen. USB-Hub mit externer Spannungsversorgung dazwischen.
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: justme1968 am 29 Juni 2013, 21:40:26
    @fhainz: es ist nichts weiter zu schreiben um das mit einem panstamp zu machen. mit dem pulsecount beispiel sketch und meinen fhem modulen geht es ohne eine zeile zu programmieren. die einzige einschränkung ist (noch) das der beispielsketch nur einen einzigen counter hat. aber das ändert sehr bald. ich brauche für mich mindestens drei.

    gruss
      andre
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: fhainz am 29 Juni 2013, 22:10:36
    @andre

    d.h. ich brauch nur die zähler, arduino mega, panStamp + vorhandene Module und ich kann dann z.B. 4-5 Zähler mitloggen? Preislich wäre das ganz ok!

    Edit
    Ok den Stick + panStamp bzw. eher das Shield fürs Raspi benötige ich auch noch, wenn ich das richtig verstanden habe

    Grüße
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: justme1968 am 29 Juni 2013, 22:28:03
    du braucchst die zähler, zwei panstamps und einen panstick. du brauchst keinen arduino mega extra. der panstamp ist ja sozusagen ein arduno mit funk modul. er hat zwar nur 9 digitale pins aber in deinem fall reicht das ja.

    der eine panstamp ist der sender, der panstick ist zum flashen und mit dem zweiten panstamp zusammen der empfänger auf fhem seite.

    wie gesagt... die module auf fhem seite sind vollständig vorhanden. den sketch für den arduino muss ich noch auf mehr als einen counter erweitern. das mache ich aber auf jeden fall weil ich es für mich brauche. und es gibt von fhem-user ja inzwischen sogar die funktionierende vorlage für mehr als einen counter.

    gruss
      andre
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Puschel74 am 29 Juni 2013, 22:32:59
    Hallo,

    ZitatAlso dient dieser doch zum Verteilen des Signals auf die 3 phasen und nicht zum Abgreifen eines lan Signals im Sicherungskasten?

    Seine Hauptaufgabe ist natürlich das Lan-Signal auf die 3 Pasen zu "verteilen" - besser es auf alle 3 Phasen ein zu koppeln.
    Das Signal muss aber natürlich - z.B.: vom Fernseher - wieder über diesen Adapter an den Router zurück.
    Und das geht definitiv.

    Wie schon geschrieben - und grad mt meinem Bruder telefonisch bestätigt.
    Sein dLan-Adapter ist mit dem Router verbunden und der Fernseher im Wohnzimmer und der im Schlafzimmer haben Internetzugang.
    Ob die 2 Adapter auf der selben Phase hängen kann ich nicht sagen aber es funktioniert.

    Grüße
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: justme1968 am 29 Juni 2013, 22:38:23
    es gibt noch eine einschränkung: es ist auf dem panstamp nur ein interupt frei. d.h. die anderen pins müssen gepollt werden. das sollte aber bei 4-5 noch kein problem sein.

    gruss
      andre
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: fhainz am 29 Juni 2013, 22:41:27
    Zitat von: justme1968 schrieb am Sa, 29 Juni 2013 22:28du braucchst die zähler, zwei panstamps und einen panstick. du brauchst keinen arduino mega extra. der panstamp ist ja sozusagen ein arduno mit funk modul. er hat zwar nur 9 digitale pins aber in deinem fall reicht das ja.
    Ok das klingt noch besser! Ich denke so werd ich es machen.

    Zitat von: justme1968 schrieb am Sa, 29 Juni 2013 22:38es gibt noch eine einschränkung: es ist auf dem panstamp nur ein interupt frei. d.h. die anderen pins müssen gepollt werden. das sollte aber bei 4-5 noch kein problem sein.
    Das bedeutet was?

    Grüße
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 29 Juni 2013, 23:35:46
    Zu fhainz:
    ZitatDas bedeutet was?
    Vielleicht hilft Dir meine erste Erläuterung (//forum.fhem.de/index.php?t=msg&th=13155&goto=83684#msg_83684) (Abschnitt Arduino) und meine Antwort auf Frage 2 beim Verständnis.
    Titel: Aw: Einbindung von S0-Zählern über Arduino
    Beitrag von: Christian. am 30 Juni 2013, 00:00:01
    Zu nusselt:

    ZitatFür die D0-Schnittstelle(SMA für Hager ehz)= 10.000 Imp/kWh. Wie kann ich diese Schnittstelle mit dem Arduino auslesen?

    Mit der D0-Schnittstelle hatte ich bisher noch gar nichts zu tun, kann deshalb auch nichts Gesichertes dazu sagen.

    Die Raspberry Pi-Erweiterung, die 4 S0-Schnittstellen anbietet, hat auch eine D0-Schnittstelle. Auf dem Bild (//shop.busware.de/images/IMG_0648.jpg) sieht es so aus, als ob auch diese auf 2 einfachen Leitungen übertragen werden. Laut zwischenzaehler.com (//www.zwischenzaehler.com/wp/?page_id=149) werden über eine D0-Schnittstelle Daten mit 9600 baud versendet. Im Mikrocontroller-Forum (//www.mikrocontroller.net/topic/190517#2109073) wird beschrieben, dass die Daten je nach Zähler als ASCII-Text oder SmartMessageLanguage (SML) formatiert sind.

    Als Schlussfolgerung aus diesen Infos vermute ich, dass man das Signal an einer seriellen Schnittstelle auslesen kann. Der Arduino Mega 2560 hat insgesamt 4 serielle Schnittstellen (//arduino.cc/de/Reference/Serial). Wenn Deine Hardware geliefert wurde, könntest Du also einfach mal versuchen, deinen D0-Zähler an eine dieser Schnittstellen (Pin 19, 17 oder 15) anzuschließen und dann mit dem Serial Monitor (Arduino-Software) zu schauen, ob etwas übertragen wird.
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: fhainz am 30 Juni 2013, 10:15:04
    Ok danke nun versteh ich das ganze denk ich ;)

    Ich werde mir das bei Zeiten bestellen und mich dann nochmal im Forum melden wenn ich's nicht zum laufen bekomme. Muss aber vorher noch meinen Verteiler/Sicherungskasten umbauen, da ist kein Platz mehr drinnen für Zähler, ...
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: bgewehr am 30 Juni 2013, 17:25:21
    Ich habe nicht den gesamten Thread gelesen, aber hast Du http://www.volkszaehler.org (//www.volkszaehler.org) gecheckt? Siehe auch fhem-Wiki unter http://www.fhemwiki.de/wiki/Volkszaehler! (//www.fhemwiki.de/wiki/Volkszaehler!)
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 30 Juni 2013, 20:34:25
    Zu bgewehr:

    Danke für den Tipp. Das Projekt hatte ich bereits auf dem Schirm, es scheidet aber aus mehreren Gründen für mich aus:
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: bgewehr am 01 Juli 2013, 06:53:55
    Per USB kann man einen 1-Wire Busmaster anschließen und daran dann das hier http://www.eservice-online.de/1-Wire-Bus/1-Wire-Fertigmodule/Digital-Ein-und-Ausgang-Analog-Eingang-Zaehler/1-Wire-Dual-S0-Zaehlermodul.html (//www.eservice-online.de/1-Wire-Bus/1-Wire-Fertigmodule/Digital-Ein-und-Ausgang-Analog-Eingang-Zaehler/1-Wire-Dual-S0-Zaehlermodul.html) anschließen.

    Damit sollte das ganze auch direkt mit der Fritze gehen...
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 01 Juli 2013, 08:08:31
    Diese Variante hatte ich im ersten Posting auch schon bedacht (Variante 2). Für mehrere Zähler wird das aber schnell teuer. Trotzdem danke für die Idee.
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: bgewehr am 01 Juli 2013, 17:34:57
    Sind immer so um die 150€, auch das hier:
    http://www.elv.de/homematic-wired-rs485-i-o-modul-12-eingaenge-7-schaltausgaenge-1.html (//www.elv.de/homematic-wired-rs485-i-o-modul-12-eingaenge-7-schaltausgaenge-1.html)
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 01 Juli 2013, 17:57:56
    Wie kommst Du auf 150€?
    5 S0-Zähler à 20€ sind schonmal 100€. Wenn ich dann noch 3 1-Wire-Module à 50€ brauche, bin ich bei 250€. Alternativ das RS485-Modul à 120€, da komme ich auf 220€. Dagegen ist ein Arduino Mega 2560 schon für 15€ (China-Nachbau über eBay, sonst 50€) zu bekommen, damit kommt man etwas günstiger weg.
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 02 Juli 2013, 07:44:24
    Nachdem ich nun etwas besser verstehe, wie FHEM "tickt", habe ich mir nochmal im Wiki den Artikel zum  Firmata-Protokoll (//www.fhemwiki.de/wiki/Arduino#Arduino_mit_StandardFirmata) durchgelesen. Mittlerweile denke ich, dass man zum Auslesen von S0-Zählern über einen Arduino weder mein Modul IMPCOUNT noch meinen Arduino-Sketch impcount.ino benötigt. Es sollte auch über das bestehende Modul FRM_IN und den standardmäßig mit dem Arduino ausgelieferten Sketch StandardFirmata (evtl. sogar mit dem abgespeckten SimpleDigitalFirmata) funktionieren.

    Von der Idee her werden die Impulse einfach nur vom Arduino an das Modul FRM_IN weitergeleitet. Die Weiterverarbeitung, z.B. Berechnung der kWh, erfolgt dann im Anschluss, z.B. über Events. Das müsste ohne viel Aufwand zu machen sein.

    Ich versuche gerade, das für Pin 2 umzusetzen; hinbekommen habe ich es aber leider noch nicht. Hier ein Auszug aus meiner fhem.cfg:

    define FIRMATA FRM /dev/ttyACM0@57600
    attr   FIRMATA sampling-interval 1000
    attr   FIRMATA room Firmata
    attr   FIRMATA loglevel 3

    define arduino_pin_02_frm FRM_IN 2
    attr   arduino_pin_02_frm count-mode falling
    attr   arduino_pin_02_frm room Firmata
    Außerdem habe ich den Sketch SimpleDigitalFirmata zu Testzwecken wie folgt erweitert

    long currentMillis = millis();
    void loop() {
        // Hier steht der Original-Code aus SimpleDigitalFirmata, und danach:

        if (millis() - currentMillis > 2000) {
          outputPort(2, LOW);
          delay(500);
          outputPort(2, HIGH);
          currentMillis = millis();
        }
    }
    und auf den Arduino hochgeladen.

    Im FHEM-Log sehe ich nun, dass Signale im Modul FRM eingehen, z.B.

    2013.07.02 07:26:40 3: <92,01,00,92,30,00
    2013.07.02 07:26:42 3: <92,00,00
    2013.07.02 07:26:42 3: <92,01,00,92,30,00
    2013.07.02 07:26:44 3: <92,00,00
    2013.07.02 07:26:45 3: <92,01,00,92,30,00
    Das Modul FRM_IN, also mein Gerät arduino_pin_02_frm, bekommt davon aber scheinbar nichts mit. Ich erwarte abwechselnd den Status on oder off, er ist aber immer nur reading:

    (siehe Anhang / see attachement)


    Fehlt mir noch etwas?
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: bgewehr am 02 Juli 2013, 08:12:59
    Ist stateformat Reading evtl. falsch?
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: ntruchsess am 02 Juli 2013, 13:36:08
    hallo fhem-user,

    so spontan sieht das erst mal korrekt aus (fhem.cfg, geloggte Firmata-messages). Der Wiki-artikel ist übrigens veraltet, FRM ist seit 5.4 im Standard drin und bekommt auch updates über ein normales FHEM 'update'. 'StandardFirmata.ino' als Sketch ist eigentlich auch 'out'. Aktuell ist ConfigurableFirmata (//github.com/firmata/arduino/tree/configurable) (hier als zip-datei (//github.com/firmata/arduino/archive/configurable.zip)) Hat das FRM_IN-modul beim Hochfahren irgendwas geloggt? Was findet sich denn auf der Details-seite des FRM-moduls?

    Gruß,

    Norbert
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: ntruchsess am 02 Juli 2013, 17:06:32
    Ich hab bemerkt, dass FRM_IN gar nichts zählt, wenn man keinen count-threshold definiert hat.

    Hier habe ich grade einen Fix commited (//github.com/ntruchsess/fhem-mirror/raw/1bfe397554c5d08e34d4a9c72596a94b7f0a721a/fhem/FHEM/20_FRM_IN.pm). Ist noch ungetestet (die Hardware steht zu Hause, da komme ich erst heute Abend dazu, dann kommt der Fix auch ins offizielle svn...)

    Das reading (und der STATE) sollten aber auch ohne den Fix geupdated werden.

    Gruß,

    Norbert
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: justme1968 am 02 Juli 2013, 17:13:26
    wenn du das berechnen mit den userReadings machst ist vielleicht auch der patch hier Link (http://forum.fhem.de/index.php?topic=13512.msg83824#msg83824) für dich interessant (doku ganz untem in thread).

    damit zählt fhem den counter auch weiter wenn zwischendurch der arduino oder s0 zähler resettet wird.

    gruss
      andre
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 02 Juli 2013, 21:29:41
    Hallo Norbert,

    danke für die schnelle Antwort. Ich habe FHEM neu gestartet, hier die Ausgaben.

    Konsole der Fritz!Box:
    # cd var/InternerSpeicher/fhem/
    # chroot . bin/startfhem shutdown restart
    mount: mounting proc on /proc failed: Device or resource busy
    mount: mounting sysfs on /sys failed: Device or resource busy
    mount: mounting usbfs on /proc/bus/usb failed: Device or resource busy
    # Use of uninitialized value $buf in split at /usr/share/fhem/FHEM/10_FRM.pm line 412, <$fh> line 87.
    Use of uninitialized value $wbuf in string eq at /opt/lib/perl5/site_perl/5.12.2/mips-linux/Device/SerialPort.pm line 1729, <$fh> line 87.
    Use of uninitialized value $buf in split at /usr/share/fhem/FHEM/10_FRM.pm line 412, <$fh> line 87.
    Use of uninitialized value $wbuf in string eq at /opt/lib/perl5/site_perl/5.12.2/mips-linux/Device/SerialPort.pm line 1729, <$fh> line 87.
    Use of uninitialized value $buf in split at /usr/share/fhem/FHEM/10_FRM.pm line 412, <$fh> line 87.
    Use of uninitialized value $wbuf in string eq at /opt/lib/perl5/site_perl/5.12.2/mips-linux/Device/SerialPort.pm line 1729, <$fh> line 87.
    Use of uninitialized value $buf in split at /usr/share/fhem/FHEM/10_FRM.pm line 412, <$fh> line 88.
    Use of uninitialized value $wbuf in string eq at /opt/lib/perl5/site_perl/5.12.2/mips-linux/Device/SerialPort.pm line 1729, <$fh> line 88.
    Use of uninitialized value $buf in split at /usr/share/fhem/FHEM/10_FRM.pm line 412, <$fh> line 92.
    Use of uninitialized value $wbuf in string eq at /opt/lib/perl5/site_perl/5.12.2/mips-linux/Device/SerialPort.pm line 1729, <$fh> line 92.
    Use of uninitialized value $buf in split at /usr/share/fhem/FHEM/10_FRM.pm line 412, <$fh> line 92.
    Use of uninitialized value $wbuf in string eq at /opt/lib/perl5/site_perl/5.12.2/mips-linux/Device/SerialPort.pm line 1729, <$fh> line 92.


    FHEM-Log:
    2013.07.02 20:32:13 1: Including /etc/fhem.cfg
    2013.07.02 20:32:14 3: telnetPort: port 7072 opened
    2013.07.02 20:32:15 3: WEB: port 8083 opened
    2013.07.02 20:32:15 3: WEBphone: port 8084 opened
    2013.07.02 20:32:15 3: WEBtablet: port 8085 opened
    2013.07.02 20:32:15 3: Opening fbaha device localhost:2002
    2013.07.02 20:32:15 3: Can't connect to localhost:2002: Connection refused
    2013.07.02 20:32:17 3: Opening FIRMATA device /dev/ttyACM0
    2013.07.02 20:32:17 3: Setting FIRMATA baudrate to 57600
    2013.07.02 20:32:17 3: FIRMATA device opened
    2013.07.02 20:32:19 3: Firmata Firmware Version: SimpleDigitalFirmata.ino V_0_01
    2013.07.02 20:32:22 3: 3
    2013.07.02 20:32:22 3: >
    2013.07.02 20:32:22 3: SW:
    2013.07.02 20:32:22 3: >
    2013.07.02 20:32:22 3: SW:
    2013.07.02 20:32:22 1: configfile: 3
    2013.07.02 20:32:22 1: Including /var/log/fhem/fhem.save
    2013.07.02 20:32:22 1: usb create starting
    2013.07.02 20:32:22 3: Opening CUL device /dev/ttyACM1
    2013.07.02 20:32:22 3: Can't open /dev/ttyACM1: Invalid argument
    2013.07.02 20:32:22 3: Opening TCM310 device /dev/ttyUSB0
    2013.07.02 20:32:22 3: Can't open /dev/ttyUSB0: No such device or address
    2013.07.02 20:32:22 3: Opening TCM310 device /dev/ttyUSB1
    2013.07.02 20:32:22 3: Can't open /dev/ttyUSB1: No such device or address
    2013.07.02 20:32:22 1: usb create end
    2013.07.02 20:32:22 2: SecurityCheck:  WEB,WEBphone,WEBtablet has no basicAuth attribute. telnetPort has no password/globalpassword attribute. Running with root privileges. Restart fhem for a new check if the problem is fixed, or set the global attribute motd to none to supress this message.
    2013.07.02 20:32:22 0: Server started with 12 defined entities (version Fhem 5.4 (DEVELOPMENT), $Id: fhem.pl 3008 2013-04-01 11:19:27Z rudolfkoenig $, AVM Build: 84.05.55-25188, pid 25194)
    2013.07.02 20:32:24 3: <92,00,00,92,01,00,92,30,00
    2013.07.02 20:32:25 3: <92,00,00
    2013.07.02 20:32:25 3: <92,01,00,92,30,00
    2013.07.02 20:32:27 3: <92,00,00
    2013.07.02 20:32:28 3: <92,01,00,92,30,00
    2013.07.02 20:32:30 3: <92,00,00
    2013.07.02 20:32:30 3: <92,01,00,92,30,00
    2013.07.02 20:32:32 3: <92,00,00


    Dann habe ich noch einen Screenshot von den FRM-Details; da scheint irgendwas ein set mit ungültigem Parameter aufzurufen:

    (siehe Anhang / see attachement)


    Dann habe ich noch ein update stable check versucht; das liefert aber nur
    2013.07.02 20:40:33 3: update get http://fhem.de/fhemupdate4/stable/controls_fhem.txt
    2013.07.02 20:40:33 1: update File 'controls_fhem.txt' (remote) is corrupt


    Zu guter letzt habe auch das Archiv arduino-configurable.zip ins Verzeichnis $ARDUINO_HOME/libraries/ConfigurableFirmata entpackt und den Sketch ConfigurableFirmata geöffnet. Beim Compile erhalte ich aber
    ConfigurableFirmata:42: error: 'DigitalInputFirmata' does not name a type

    Dabei steht der include eine Zeile drüber?! Ich habe es unter Windows mit der Arduino IDE 1.0.5 und 1.5.2 versucht.

    Heute ist wohl kein guter Tag...

    Christian
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: ntruchsess am 03 Juli 2013, 22:56:27
    Hallo Christian,

    ZitatZu guter letzt habe auch das Archiv arduino-configurable.zip ins Verzeichnis $ARDUINO_HOME/libraries/ConfigurableFirmata entpackt und den Sketch ConfigurableFirmata geöffnet. Beim Compile erhalte ich aber

    Du musst den Inhalt des arduino-configurable.zip nach $ARDUINO_HOME/libraries/Firmata/ entpacken. Das Verzeichniss muss so heißen, wie der darin enthaltene Haeder-file 'Firmata.h' bzw. cpp-file 'Firmata.cpp'. Die im Sketch referenzierten Haederfiles liegen dann alle in $ARDUINO_HOME/libraries/Firmata/utility/. Die Ide fügt dieses utility-verzeichniss automatisch dem Include-Pfad hinzu.

    Wenn die Library nicht so wie das Verzeichnis heißt, dann funktioniert diese Automatik leider nicht.

    Den ConfigurableFirmata-sketch findest Du dann unter 'Datai->Beispiele->Firmata->ConfigurableFirmata'

    Gruß,

    Norbert
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 05 Juli 2013, 08:34:57
    Das Compile-Problem konnte ich mit Norberts Hilfe beheben. Es hat nicht gereicht, das Verzeichnis korrekt zu benennen, das ursprüngliche Firmata-Verzeichnis muss komplett raus aus dem libraries-Verzeichnis. Ich hatte es nur umbenannt, damit ging es aber noch nicht.

    Jetzt kann ich also kompilieren. Ich habe bis auf FirmataDigitalInput alles entfernt und loop() um eine Schleife erweitert, die alle 2 Sekunden abwechselnd
    digitalInput.reportDigital(2, LOW)
    und
    digitalInput.reportDigital(2, HIGH)
    aufruft.
    Auf dem Serial Monitor sehe ich davon aber nichts. Ich werde mal weiter probieren.
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 05 Juli 2013, 22:25:02
    Mit folgender Erweiterung der ConfigurableFirmata werden jetzt periodisch wechselnde Werte gesendet:

    const byte PIN_NUMBER = 2;
    long currentMillis = millis();
    boolean low = true;

    void loop() {
    ...
        if (millis() - currentMillis > 2000) {
          Firmata.sendDigitalPort(PIN_NUMBER, low ? LOW : HIGH);
          low = !low;
          currentMillis = millis();
        }

    Das Ergebnis entspricht (wie ich eigentlich auch erwartet habe) dem der vorigen Variante mit SimpleDigitalFirmata. Im Log finde ich jetzt
    2013.07.05 22:12:42 3: <92,01,00
    2013.07.05 22:12:44 3: <92,00,00
    2013.07.05 22:12:46 3: <92,01,00
    2013.07.05 22:12:48 3: <92,00,00
    In FHEM habe ich noch nichts weiter probiert, deshalb besteht das Problem der fehlenden Werte immer noch.
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 05 Juli 2013, 22:37:03
    Ein weiteres Problem ist gelöst: der Aufruf von update stable check wird wohl (derzeit) nicht unterstützt (//forum.fhem.de/index.php?t=msg&goto=65189). Dann bleibt mir ja noch die Möglichkeit, den development-Zweig auszuprobieren.
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 06 Juli 2013, 08:38:42
    Ich habe jetzt ein update development fhem durchgeführt, am Verhalten hat sich aber nichts geändert. Auf der Firmata-Detail-Seite enthält die Dropdown-Box für die erlaubten set-Befehle immer noch eine Fehlermeldung.
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 08 Juli 2013, 07:21:04
    Auf der Details-Seite zum Modul FRM ist die set-Liste ja falsch befüllt. Ich habe mal ausgeben lassen, wer den set-Aufruf macht und was übergeben wird. Das Argument ist das Fragezeichen (Hex 3F), und der Aufruf-Stack lautet2013.07.08 07:12:45 3: /usr/bin/fhem.pl:1185 in function main::CallFn
    2013.07.08 07:12:45 3: /usr/bin/fhem.pl:1218 in function main::DoSet
    2013.07.08 07:12:45 3: /usr/bin/fhem.pl:1735 in function main::CommandSet
    2013.07.08 07:12:45 3: /usr/share/fhem/FHEM/01_FHEMWEB.pm:824 in function main::getAllSets
    2013.07.08 07:12:45 3: /usr/share/fhem/FHEM/01_FHEMWEB.pm:583 in function main::FW_doDetail
    2013.07.08 07:12:45 3: /usr/share/fhem/FHEM/01_FHEMWEB.pm:308 in function main::FW_answerCall
    2013.07.08 07:12:45 3: /usr/bin/fhem.pl:2448 in function main::FW_Read
    2013.07.08 07:12:45 3: /usr/bin/fhem.pl:479 in function main::CallFn
    Kann damit jemand was anfangen? Verwendet evtl. FHEMWEB ein falsches Argument?
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 08 Juli 2013, 07:29:03
    Ich schätze, ich hab's schon selbst gefunden. In 10_FRM sollte Zeile 117 wie folgt geändert werdenreturn "Unknown argument $a[1], choose one of reset reinit";Denn fhem.pl prüft auf den String "choose one of ".

    Jetzt bleibt nur noch das Hauptproblem, dass FRM_IN keine Werte erhält.
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: ntruchsess am 08 Juli 2013, 10:14:08
    ja, das ist der Grund für die fehlerhafte Anzeige der set-werte im Web-gui. Ist natürlich eher ein kosmetisches Problem, ich habs trotzdem endlich mal behoben und ins svn committed.

    Für das FRM_IN-modul habe ich auch ein Paar Anpassungen für die Verwendung des Zählers vorgenommen, bitte probiere das mal aus. (aus dem svn auschecken oder per 'update development' installieren).

    Unter Anderem wird der Zähler jetzt gleich auf 0 initialisiert, wenn man das Attribute count-mode setzt. Weiterhin kann man jetzt per 'attr reset-on-threshold-reached yes' den Zähler bei Erreichen des per 'attr count-threshold <x>' setzbaren Grenzwert automatisch zurücksetzen lassen.

    Gruß,

    Norbert
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 08 Juli 2013, 21:22:41
    Hallo Norbert,

    zuerst nochmal vielen Dank für Deinen Einsatz.

    Ich habe die beiden Module FRM und FRM_IN aus dem Subversion-Repository heruntergeladen und eingebunden. update development hatte ich auch versucht, da wurden aber keine Updates angezeigt.

    Ich kann aber nach startfhem shutdown restart, reload FRM und reload FRM_IN leider überhaupt keinen Unterschied im Verhalten feststellen. Auch das Log sieht unverändert aus. Das neue Attribut reset-on-threshold-reached kann ich aber sehen.

    Hier nochmal ein paar aktuelle Screenshots:

    (siehe Anhang / see attachement)


    (siehe Anhang / see attachement)

    2013.07.08 21:06:19 1: arduino_pin_02_frm is against deletion (2), continuing with rereadcfg anyway
    2013.07.08 21:06:19 1: /dev/ttyACM0 disconnected, waiting to reappear
    2013.07.08 21:06:19 1: Including /etc/fhem.cfg
    2013.07.08 21:06:19 3: telnetPort: port 7072 opened
    2013.07.08 21:06:19 3: WEB: port 8083 opened
    2013.07.08 21:06:19 3: WEBphone: port 8084 opened
    2013.07.08 21:06:19 3: WEBtablet: port 8085 opened
    2013.07.08 21:06:19 3: Opening fbaha device localhost:2002
    2013.07.08 21:06:19 3: Can't connect to localhost:2002: Connection refused
    2013.07.08 21:06:19 3: Opening FIRMATA device /dev/ttyACM0
    2013.07.08 21:06:19 3: Setting FIRMATA baudrate to 57600
    2013.07.08 21:06:19 3: FIRMATA device opened
    2013.07.08 21:06:22 3: querying Firmata Firmware Version
    2013.07.08 21:06:22 3: Firmata Firmware Version: ConfigurableFirmata.ino V_2_05
    2013.07.08 21:06:24 3: >d0,01
    2013.07.08 21:06:24 3: SW: �
    2013.07.08 21:06:24 3: >f4,02,00
    2013.07.08 21:06:24 3: SW: �
    2013.07.08 21:06:24 1: Including /var/log/fhem/fhem.save
    2013.07.08 21:06:24 3: <92,01,00
    2013.07.08 21:06:26 3: <92,00,00
    2013.07.08 21:06:28 3: <92,01,00
    2013.07.08 21:06:30 3: <92,00,00

    Wo muss ich denn fürs Debugging ansetzen? Da die Signale es bis ins Log schaffen, wird FRM wohl funktionieren. Ich habe aber noch nicht verstanden, wie die Übergabe zwischen FRM und FRM_IN abläuft. Da könnte ich doch vielleicht noch ein paar Log-Ausgaben einbauen, um der Sache auf die Spur zu kommen.
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: ntruchsess am 08 Juli 2013, 22:01:52
    hm... das ist ja echt verblüffend.

    im FRM_IN gibt es die sub FRM_IN_observer, die wird im FRM_IN_Init mit $firmata->observe_digital($hash->{PIN},\&FRM_IN_observer,$hash); im perl-firmata-device registriert.

    Bei Eingang einer digital-message wird die Methode dann von perl-firmata in der methode Device::Firmata::Platform::messages_handle() aufgerufen.

    Wenn beim registrieren (aufruf von observer_digital) die methode Device::Firmata::Platform::is_supported_mode feststellt, dass der Mode an diesem Pin gar nicht geht, dann sollte dieser Fehler per 'die' bis in die Methode 10_FRM::FRM_Init_Pin_Client hochkommen, der per eval abgefangen werden und zu einer Logausgabe (loglevel 2) führen.

    Kann gut sein, dass es daran liegt. Deine FRM details Seite listed auch gar keine supported Pinmodes auf. Hast Du vieleicht das Firmata_Ext aus der ConfigurableFirmata auskommentiert?

    Gruß,

    Norbert



    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 08 Juli 2013, 22:26:30
    Ja, das war ein guter Hinweis. Natürlich habe ich alles bis auf DigitalInputFirmata aus ConfigurableFirmata entfernt, weil ich für die S0-Zähler sonst nichts brauche. Jetzt habe ich mal alles drin gelassen und bekomme einen (vermutlich den von Dir prophezeiten) Fehler:

    (siehe Anhang / see attachement)


    Jetzt muss ich vermutlich noch den pin mode setzen? Wäre das im Arduino-Sketch?
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: ntruchsess am 08 Juli 2013, 23:43:06
    Zitat von: fhem-user schrieb am Mo, 08 Juli 2013 22:26Jetzt muss ich vermutlich noch den pin mode setzen? Wäre das im Arduino-Sketch?

    Nein, das mach das FRM_IN-modul remote über das Firmata-protocol.

    Wenn das nur im Sketch gemacht wird, dann weiß FRM bzw. FRM_IN da ja nix von und ignoriert die Nachrichten.

    (den 'Unknown Pin Mode'-error in den FRM-details kannst Du erst mal ignorieren, der kommt daher, dass in der Systemreset-methode des Sketches irrtümlich auch pin 0 und 1 initialisiert werden)

    Gruß,

    Norbert
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 09 Juli 2013, 07:07:23
    Hallo Norbert,

    ich habe jetzt noch ein paar Log-Statements eingebaut und komme der Sache langsam auf die Spur. Es scheint, als würden bei eingehenden Nachrichten andere Observer informiert als der registrierte.
    Initialisierung:

    2013.07.09 06:57:34 3: >f0,7a,68,07,f7
    2013.07.09 06:57:34 3: SW: �zh�
    2013.07.09 06:57:34 3: Platform::is_supported_mode(pin=2)?
    2013.07.09 06:57:34 3: Platform::is_supported_mode(pin=2): yes, still alive
    2013.07.09 06:57:34 3: >d0,01
    2013.07.09 06:57:34 3: SW: �
    2013.07.09 06:57:34 3: >f4,02,00
    2013.07.09 06:57:34 3: SW: �
    2013.07.09 06:57:34 3: observe_digital
    2013.07.09 06:57:34 3: Platform::observe_digital(pin=2)
    2013.07.09 06:57:34 3: Platform::is_supported_mode(pin=2)?
    2013.07.09 06:57:34 3: Platform::is_supported_mode(pin=2): yes, still alive
    2013.07.09 06:57:34 3: Platform::observe_digital: is supported(pin=2, observer=CODE(0xbb1d00))

    Bei jeder eingehenden Nachricht:

    2013.07.09 06:57:52 3: <92,01,00
    2013.07.09 06:57:52 3: Platform::messages_handle
    2013.07.09 06:57:52 3: Platform::messages_handle: command DIGITAL_MESSAGE
    2013.07.09 06:57:52 3: Platform::messages_handle: port_number = 2
    2013.07.09 06:57:52 3: Platform::messages_handle: observers = ARRAY(0xb97018)
    2013.07.09 06:57:52 3: Platform::messages_handle: pinbase=16
    2013.07.09 06:57:52 3: Platform::messages_handle: pin=16
    2013.07.09 06:57:52 3: Platform::messages_handle: observer is undefined
    2013.07.09 06:57:52 3: Platform::messages_handle: pin=17
    2013.07.09 06:57:52 3: Platform::messages_handle: observer is undefined
    2013.07.09 06:57:52 3: Platform::messages_handle: pin=18
    2013.07.09 06:57:52 3: Platform::messages_handle: observer is undefined
    2013.07.09 06:57:52 3: Platform::messages_handle: pin=19
    2013.07.09 06:57:52 3: Platform::messages_handle: observer is undefined
    2013.07.09 06:57:52 3: Platform::messages_handle: pin=20
    2013.07.09 06:57:52 3: Platform::messages_handle: observer is undefined
    2013.07.09 06:57:52 3: Platform::messages_handle: pin=21
    2013.07.09 06:57:52 3: Platform::messages_handle: observer is undefined
    2013.07.09 06:57:52 3: Platform::messages_handle: pin=22
    2013.07.09 06:57:52 3: Platform::messages_handle: observer is undefined
    2013.07.09 06:57:52 3: Platform::messages_handle: pin=23
    2013.07.09 06:57:52 3: Platform::messages_handle: observer is undefined

    Ich hoffe, es ist soweit klar, wo ich die Log-Ausgaben gesetzt habe.

    Ich verstehe nicht: weshalb werden hier die Observer der Pins 16-23 überprüft?

    Hier nochmal der Sende-Vorgang im Arduino-Sketch:
       if (millis() - currentMillis > 2000) {
          Firmata.sendDigitalPort(2, low ? LOW : HIGH);
          low = !low;
          currentMillis = millis();
        }
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: ntruchsess am 09 Juli 2013, 07:40:52
    na jetzt is klar. Du sendest auf Port 2 (= pin 16-23) und lauscht auf Pin2 (= port 0). Ein Port (das ist ein Hardwareregister der MCU) fasst immer 8 Pins zusammen. Die 'digitalWrite/digitalRead'-methoden der Arduino-api setzen das Mapping Pin<->Port in Software um, unter der Haube wird immer ein 8-Bit Register gelesen/beschrieben. Weil man sowieso die Bits nicht einzeln lesen und auch nicht effektiv transportieren kann, wird im Firmata-Protocol immer ein ganzes Port-Byte übertragen. Schau mal im Sourcecode der DigitalInputFirmata (//github.com/firmata/arduino/blob/configurable/utility/DigitalInputFirmata.cpp#L52) klasse wie das gemappt wird.

    Gruß,

    Norbert
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 10 Juli 2013, 00:21:16
    Ja super, das war's! Ich habe meinen Demo-Sketch geändert

        if (millis() - currentMillis > 2000) {
          // Find the correct port (each port holds 8 pins)
          byte portNumber = PIN_NUMBER / 8;
          // A pin is represented by a bit within the port
          // find this bit and set the current value
          byte portValue = (low ? LOW : HIGH) << (PIN_NUMBER % 8);
          Firmata.sendDigitalPort(portNumber, portValue);
          low = !low;
          currentMillis = millis();
        }

    Jetzt hab ich eine blinkende Glühbirne - tausend Dank, Norbert!

    Als nächstes werde ich dann die Umrechnung von Signalen in kWh angehen.

    Eine Frage hab ich noch: den pinMode möchte ich nach der Testphase gern wieder auf INPUT_PULLUP setzen - kann ich das über Firmata von FHEM aus machen?

    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 12 Juli 2013, 00:01:28
    Ich habe es jetzt fast geschafft: die Integration von S0-Zählern über einen Arduino ist möglich, ohne selbst Arduino-Code oder ein FHEM-Modul zu schreiben. Auf den Arduino kommt z.B. die ConfigurableFirmata, in FHEM genügt folgende Konfiguration:

    # Firmata Basis-Modul für die Kommunikation mit dem Arduino
    define FIRMATA FRM /dev/ttyACM0@57600
    attr FIRMATA room Arduino

    # Pin 2 als digitalen Eingang konfigurieren
    define arduino_pin_02 FRM_IN 2
    attr arduino_pin_02 alias Demo-Stromzähler
    attr arduino_pin_02 room Arduino

    # User-Readings zu Pin 2
    # ----------------------
    # 'time'  enthält den Zeitstempel des letzten Signals in Mikrosekunden-Genauigkeit;
    #         wird zur Berechnung von 'power' benötigt, da sonst nur sehr grobe
    #         Näherungswerte für die Leistung berechnet werden könnten
    #         (nämlich "3600/n" wobei n eine natürliche Zahl ist, also z.B.
    #         3600, 1800, 1200, 900, 720, 600, 514, 450, 400, 360, ...)
    #
    # 'power' enthält die gemessene Leistung (in Kilowatt)
    #
    attr arduino_pin_02 userReadings time:reading:.off { use Time::HiRes qw(time);; time();; }, power:reading:.off { use Time::HiRes qw(time);; sprintf("%.5f", 3.6 / (time() - OldValue("arduino_pin_02"))) . " kW";; }

    # 'time' als STATE-Wert für Pin 2 festlegen
    attr arduino_pin_02 stateFormat time

    # Eine Log-Datei pro Tag für Pin 2, enthält nur 'power'-Einträge
    define log_arduino_pin_02 FileLog %L/arduino_pin_02-%Y-%m-%d.log arduino_pin_02.power:.*
    attr log_arduino_pin_02 alias Demo-Log
    attr log_arduino_pin_02 room Arduino

    # Diagramm zur Log-Datei von Pin 2
    define weblink_pin_02 weblink fileplot log_arduino_pin_02:power4:CURRENT
    attr weblink_pin_02 alias Demo-Diagramm
    attr weblink_pin_02 room Arduino
    attr weblink_pin_02 title "Demo-Stromzähler"


    Im Webfrontend sieht das das so aus:

    (siehe Anhang / see attachement)


    Auszug aus dem Log:

    2013-07-11_23:53:26 arduino_pin_02 power: 0.80755 kW
    2013-07-11_23:53:31 arduino_pin_02 power: 0.75362 kW
    2013-07-11_23:53:35 arduino_pin_02 power: 0.80159 kW
    2013-07-11_23:53:39 arduino_pin_02 power: 0.80125 kW
    2013-07-11_23:53:42 arduino_pin_02 power: 0.80501 kW
    2013-07-11_23:53:47 arduino_pin_02 power: 0.79367 kW

    Das FHEM-Modul IMPCOUNT und der zugehörige Arduino-Sketch sind damit überflüssig.

    Ich möchte mich an dieser Stelle bei allen Beteiligten, insbesondere und ausdrücklich noch einmal bei Norbert, für die Unterstützung bedanken!

    Einzig ungeklärt bleibt für mich, ob der pinMode über das FHEM-Firmata-Modul auf INPUT_PULLUP gesetzt werden kann; dazu habe ich noch nichts gefunden.
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: nusselt am 16 Juli 2013, 23:30:42
    fhem-user schrieb am Fr, 12 Juli 2013 00:01

    # User-Readings zu Pin 2
    # ----------------------
    # 'time'  enthält den Zeitstempel des letzten Signals in Mikrosekunden-Genauigkeit;
    #         wird zur Berechnung von 'power' benötigt, da sonst nur sehr grobe
    #         Näherungswerte für die Leistung berechnet werden könnten
    #         (nämlich "3600/n" wobei n eine natürliche Zahl ist, also z.B.
    #         3600, 1800, 1200, 900, 720, 600, 514, 450, 400, 360, ...)
    #
    # 'power' enthält die gemessene Leistung (in Kilowatt)
    #
    attr arduino_pin_02 userReadings time:reading:.off { use Time::HiRes qw(time);; time();; }, power:reading:.off { use Time::HiRes qw(time);; sprintf("%.5f", 3.6 / (time() - OldValue("arduino_pin_02"))) . " kW";; }

    Erstmal herzlichen Glückwunsch das Du es mit Hilfe von Norbert geschafft hast und die beiden Programme IMCOUNT und imcount.ino für fhem nicht benötigst. Gleichwohl kann imcount.ino weiter gute Dienste bei Anwendungen ohne fhem leisten. Denn es ist möglich, mittels imcount.ino die Impulse auf die Fritzbox-shell zu bringen und mit einem shellscript die Impulse mit einem Zeitstempel zu versehen und in eine log-Datei zuschreiben. Will sagen, imcount.ino hat weiterhin seine Berechtigung.

    Wäre es möglich, das Du das o.g. attr userReadings erklärst? Was passiert bei time:reading:.off, power:reading:.off und sprintf(...)? Mir ist nicht klar, welche Zeitdifferenz Du zur Berechnung von Power heranziehst. Ist das die Differenz zwischen zwei abfallenden Flanken, w.s zwei Impulsen? Welche Rolle spielt dabei der Faktor 3600/n, Auflösung von 1 bis 60 min? Warum erfolgt die Übergabe der Werte(portnumber, portvalue(low?)) im demo-sketch bei > 2000 ms? Werden die millis und current millis ebenfalls an fhem übergeben oder werden die erst in fhem gebildet?
    Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 17 Juli 2013, 07:38:35
    Hallo HJü,

    ZitatWas passiert bei time:reading:.off, power:reading:.off und sprintf(...)? Mir ist nicht klar, welche Zeitdifferenz Du zur Berechnung von Power heranziehst. Ist das die Differenz zwischen zwei abfallenden Flanken, w.s zwei Impulsen? Welche Rolle spielt dabei der Faktor 3600/n, Auflösung von 1 bis 60 min?
    dann versuche ich mal, den Code zu erläutern.

    time:reading:.off { use Time::HiRes qw(time);; time();; }Das User Reading time reagiert auf FHEM-Benachrichtigungen, die auf den regulären Ausdruck reading:.off passen ('.' steht für 1 beliebiges Zeichen, also z.B. auch 1 Leerzeichen). Diese Benachrichtigungen werden vom Firmata-Modul versendet, sobald vom Arduino ein LOW-Signal (0 V) eintrifft. HIGH-Signale hingegen werden ignoriert. Im zugehörigen Sketch ConfigurableFirmata wird ein LOW immer nur gesendet, wenn der vorige Wert HIGH war, das entspricht also einer fallenden Flanke.
    use Time::HiRes qw(time);; erlaubt die Mikrosekunden-genaue Abfrage der Zeit über das Perl-Modul Time, ansonsten wäre der Zeitstempel nur sekundengenau. time();; ruft den aktuellen Zeitstempel vom System ab. Dieser Wert wird im Reading gespeichert. Wichtig ist auch die Zeile etwas weiter unten
    attr arduino_pin_02 stateFormat timeDiese belegt den State des Gerätes arduino_pin_02 mit dem User Reading time. Der State ist gewissermaßen das Haupt-Reading; ich nutze hier aus, dass für den State nicht nur auf den aktuellen Wert, sondern auch auf den vorigen Wert zugegriffen werden kann.

    power:reading:.off { use Time::HiRes qw(time);; sprintf("%.5f", 3.6 / (time() - OldValue("arduino_pin_02"))) . " kW";; }Ein User Reading namens power, das auf dieselben FHEM-Benachrichtigungen reagiert wie time, also auf fallende Flanken. Auch hier wird zunächst die Genauigkeit des Zeitstempels erhöht. Dann wird der Wert für power berechnet:OldValue("arduino_pin_02"): den vorigen State laden; State enthält den Wert des User Readings time, das ergibt also den Zeitstempel der letzten fallenden Flanke.
  • Die aktuelle Zeit bestimmen und die Differenz bilden; damit haben wir die Dauer zwischen zwei fallenden Flanken in Sekunden, z.B. 2.345
  • Berechnung des Stromverbrauchs. Der Stromzähler gibt 1 Signal pro Wh ab, also 1000 Signale pro kWh; eine Stunde hat 3600 Sekunden. Aus der gemessenen Dauer (x Sekunden) berechne ich die momentane Leistung p in kW:
       p kW = 1 Wh / x s
    <=> p kW = 3600 Wh / x * 3600s
    <=> p kW = 3,6 kWh / x * 1h
    <=> p kW = 3,6 kW / x
    <=> p = 3,6/x
  • sprintf("%.5f", ...: Das Ergebnis wird bei 5 Nachkommastellen abgeschnitten und in einen String umgewandelt.
  • . " kW": Einheit ergänzen (falls man später vielleicht mal auf Wh umstellt oder so).[/list]
    ZitatWarum erfolgt die Übergabe der Werte(portnumber, portvalue(low?)) im demo-sketch bei > 2000 ms?
    Das ist ein willkürlicher Wert, den ich zum Testen gewählt habe; er entspricht einem Verbrauch von ca. 1800 W. Sobald ein Stromzähler angeschlossen wird, ist der komplette if-Block überflüssig; dann kann die ConfigurableFirmata unverändert verwendet werden.

    ZitatWerden die millis und current millis ebenfalls an fhem übergeben oder werden die erst in fhem gebildet?
    In impcount.ino wurde die Dauer zwischen zwei Flanken noch vom Arduino berechnet; in der aktuellen Variante geschieht das wie oben beschrieben durch FHEM.
  • Titel: Aw: Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 23 Juli 2013, 07:00:31
    Ich habe für das offene Problem, die Pullup-Widerstände zu nutzen, einen eigenen Thread (http://forum.fhem.de/index.php?topic=13893.0) angelegt.
    Titel: impcount 2.0
    Beitrag von: Christian. am 28 September 2013, 07:22:59
    Das Problem mit den Pullup-Widerständen konnte Norbert lösen, ich benötige deshalb impcount nicht mehr.

    nusselt (http://forum.fhem.de/index.php?action=profile;u=1897) hat aber Verwendung dafür; er benötigt zusätzlich eine Möglichkeit, Signale mit einer konfigurierbaren Dauer als ungültig zu markieren und herauszufiltern. Ich habe impcount entsprechend angepasst und veröffentliche nach einer Testphase hier die Version 2.0.

    Change Log:


    Hinweis: impcount hat ein neues Zuhause (https://github.com/git-developer/impcount).


    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: koldomon am 22 November 2013, 16:55:24
    Hallo fhem-user,

    Darf ich mal nachfragen, nachdem der Thread schon ein paar Monate gealtert ist, wie du mit der Lösung zurechtkommst? Zuverlässigkeit und Belastung des fhem-Systems würde mich da interessieren.

    Ich steh auch grad vor der Herausforderung, einen Heizöl-Druchflusszähler an die fhem zu bringen - was mich letztendlich zu deinem Thread geführt hat. Was ich deinem Thread auch nicht entnehmen konnte, bereitest du die Daten noch auf? Ich denke da an Statistiken für kWh/[Tag|Woche|Monat].

    Wäre supi, wenn du ein wenig berichten könntest. Danke ;-)
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: JoeALLb am 23 Dezember 2013, 00:31:17
    Mich würde auch eine Erfahrung hierzu interessieren, da ich ebenfalls vor der Umsetzung stehe.

    @koldomon: Mit welcher Hardware willst Du den Öl-Durchfluss messen?
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: koldomon am 04 Januar 2014, 08:16:12
    da gibt's Durchflusszähler von "Braun Messtechnik" (braunmesstechnik.de) die scheinen mir ok zu sein
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: JoeALLb am 10 Januar 2014, 08:46:46
    Danke, aber puh... >500 Euro? Da suche ich lieber weiter nach anderen Lösungen...
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 08 Februar 2014, 20:45:52
    Hallo koldomon und JoeALLb,

    bitte entschuldigt die späte Antwort, ich habe von Euren Fragen leider nichts mitbekommen.

    Ich überwache inzwischen meinen kompletten Haushaltsstrom über 13 Stromzähler mit der Kombination FHEM / Firmata / Arduino und bin sehr zufrieden. Die Fritz!Box 7390 scheint keine Probleme zu haben, was die Performance angeht.

    Ich habe ein Log pro Tag, in dem der Strom (W) aller Zähler aufgezeichnet wird; außerdem ein Monatslog, das je Tag einen Eintrag mit der verbrauchten Energie (Wh) für den gesamten Haushalt enthält. Diagramme habe ich pro Zähler und Tag, dort werden Strom (W) und Energie (kWh) angezeigt. Außerdem habe ich noch ein Diagramm für das Monatslog.

    Was ist mir negativ aufgefallen? Hin und wieder hat die Fritz!Box auch mal anderes zu tun. Dann werden die eingehenden Signale verzögert und alle auf einmal ausgewertet, was in Diagrammen zu hohen Peaks im Stromverbrauch führt, die es eigentlich gar nicht gab. Das Problem wird auch in einem anderen Thread (http://forum.fhem.de/index.php/topic,19285.0.html) thematisiert. Ich kann damit leben.

    Hin und wieder (ca. alle 2 Wochen) verliert FHEM mal die Verbindung zum Arduino; als Ursache vermute ich, dass ich den Arduino über ein 5m langes USB-Kabel angeschlossen habe. Dann werden keine Daten mehr aufgezeichnet, was natürlich ärgerlich ist. Ich habe aber ein notify erstellen können, über das die Verbindung in einem solchen Fall automatisch wiederhergestellt wird. Schlimmstenfalls fehlen dann die Signale von 15 Sekunden. Auch damit kann ich leben.

    Alles in allem bin ich sehr zufrieden und kenne bis heute keine bessere und billigere Lösung, die Daten mehrerer Stromzähler zu erfassen.
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Henno am 27 Februar 2014, 18:41:48
    Wäre toll wenn du erläutern könntest wie du es geschafft hast die S0 mit Firmata ans laufen zu bringen.

    Welcher Sketch
    Fhem.cfg

    und was du wie wo angeschlossen hast.
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 28 Februar 2014, 06:50:12
    Hallo Henno,

    Sketch: ConfigurableFirmata (zu finden in Post #38)
    fhem.cfg: zu finden in Post #57, Erläuterung in Post #59
    Anschluss: Der Stromzähler hat zwei Kontakte, S0+ und S0-. S0+ wird mit einem digitalen Pin des Arduino verbunden, S0- mit Masse. Der Arduino wird per USB mit der Fritz!Box verbunden.

    Schöne Grüße
    Christian
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Henno am 28 Februar 2014, 11:10:00
    Danke für die Zusammenfassung.

    So hatte ich das auch schon probiert nur zählt kein Pin richtig.
    Bei einigen passiert nichts bei 2 und 3 ist es ganz merkwürdig.
    Wenn ich diese mit Masse verbinde passiert nichts.
    Wenn ich sie jedoch mit der Hand berühre zählt fhem wie verrückt hoch.

    Da ich auf dem Arduino auch kein 1-Wire mehr ans laufen bringe habe ich mir zum testen mal einen neuen bestellt.


    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 01 März 2014, 09:31:08
    Mir ist gerade aufgefallen, dass ich meine Konfiguration nach dem Post #57 (http://forum.fhem.de/index.php/topic,13155.msg85677.html#msg85677) wegen der Pullup-Problematik nochmal geändert habe. Ich habe deshalb den aktuellen Stand angehängt. Einige Funktionen habe ich zwischenzeitlich auch in die Datei 99_myUtils.pl ausgelagert. Ganz wichtig ist das Attribut internal-pullup des Moduls FRM_IN, das Norbert vor einigen Monaten eingebaut hat. Wenn das nicht auf on gesetzt wäre, würde schon bei bestehender Verbindung von Zähler und Ardunio dauerhaft gezählt.

    Ich hoffe, das hilft Dir weiter.
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: andreas.maurer am 01 April 2014, 13:11:11
    Hallo fhem-user,

    ich möchte mich für diesen Thread bedanken! Dank dessen konnte ich die Erfassung der S0 Zähler wunderbar ins fhem integrieren. Mir fehlen noch ein paar Zähler, die sind aber grade nicht lieferbar. Naja irgendwann.

    Jetzt bin ich grade bei der grafischen Visualisierung. Kann ich dich überreden deine gplot Dateien zu posten. Für mich als Einsteiger ist das Format teilweise recht undurchschaubar.

    Danke noch mal. Das hat mir sehr geholfen.

    Andreas
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 01 April 2014, 18:29:00
    Hallo Andreas,

    die gplot-Dateien hatte ich vergessen. Ich habe sie jetzt meiner vorigen Antwort hinzugefügt. Ich hoffe, sie helfen Dir weiter.

    Schöne Grüße
    Christian
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: andreas.maurer am 01 April 2014, 20:28:21
    Hallo Christian,

    perfekt! Vielen Dank.

    Andreas
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: fhainz am 17 Mai 2014, 09:55:27
    Hallo Christian,

    was ich noch nicht ganz verstehe ist warum bei dieser Berechnung Watt herauskommt :D

    3600 / (time() - OldValue(\"$counter_id\")))

    Funktioniert so sichern nur mit 1000 Impulsen pro kWh oder?

    Könntest du das näher erklären?


    Grüße
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 17 Mai 2014, 11:57:48
    Ja, genau, ich habe Zähler mit 1000 Impulsen / kWh. Ich habe die Berechnung hier (http://forum.fhem.de/index.php/topic,13155.msg86203.html#msg86203) erläutert, etwa in der Mitte des Beitrags.
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: fhainz am 17 Mai 2014, 12:07:13
    Danke, das hab ich wohl überlesen  ::)
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Bennemannc am 17 Mai 2014, 21:08:29
    Hallo,

    also ich habe das mit dem Panstamp gemacht. Derzeit habe ich zwei Zähler mit S0, die ich überwache. Das Ganze läuft mit einer Batterie und sendet alle 15 Minuten Werte, nach dem senden werden die Werte auf dem Panstamp zurückgesetzt. Tages und Monatswerte werden über average gebildet.
    Meine Variante arbeitet mit Pulldown-Menü Widerständen, wodurch ich Laufzeiten zwischen 1 und 2 Monaten für einen 2700 mAh Akku hinbekomme.

    Gruß Christoph
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: andreas.maurer am 20 Mai 2014, 13:02:38
    Hallo Christian,

    z.Z. habe ich 15 Zähler über einen Arduino mega laufen und die Daten kommen ohne Probleme.

    14 davon erfassen einzelne Kreise und einer den gesamt Verbrauch. Jetzt kommt es: In der Addition habe ich Differenzen!
    Da ich ausschließen kann, das irgendwo Strom abfließt, den ich nicht erfasse, muss irgendwas mit der Auf Addierung nicht passen.

    Dazu versuche ich grade ohne irgendein Perl Wissen hinter deinen Ansatz zu kommen. Und eine Ungereimtheit ist mir schon aufgefallen.

    define zaehler_haushalt_jetzt_erzeugung at +*00:01 { my $power = 12 * countLogEntries("300", "log_zaehler", "4:::");; fhem("set zaehler_haushalt_jetzt $power W") }

    Das bedeutet, das jede Minute "+*00:01" die Logeinträge zusammen gezählt werden, der Zeitraum der gezählt wird ist aber 5 Minuten "300" ?

    Bei der täglichen Addition stimmen die 86400 Sekunden mit dem Tagesintervall überein.

    Und warum das "12 *" ??

    Ich bin ziemlich verwirrt und würde mich über eine Erklärung freuen.

    Andreas
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Bennemannc am 20 Mai 2014, 14:31:14
    Hallo,

    wie groß sind denn die Abweichungen ? Wie misst Du denn ? Nur S0 aus geeichten Zählern ? Und selbst die geeichten Zähler dürfen eine Abweichung haben.
    ZitatFür (MID-) Elektrizitätszähler zur Messung des Wirkverbrauchs gibt es drei Genauigkeitsklassen (A, B und C). Die Eichfehlergrenzen dieser Zähler sind neben der Genauigkeitsklasse auch von den 4 zulässigen Betriebstemperaturbereichen und von der Stromstärke abhängig. Die Eichfehlergrenzen liegen zwischen 1% und 9 % bzw. die Verkehrsfehlergrenzen zwischen 2% und 18 % in Abhängigkeit von der Klasse und dem zulässigen Betriebstemperaturbereich des Zählers sowie der Stromstärke.

    Für einen Zähler mit dem Betriebstemperaturbereich -10 °C bis + 40 °C liegen die Verkehrsfehlergrenzen in Abhängigkeit vom Strom

        für einen Zähler der Klasse A zwischen 9% und 10%.
        für einen Zähler der Klasse B zwischen 5% und 6%.
        für einen Zähler der Klasse C zwischen 2% und 2,6%.

    Ein Zähler der Klasse C wird aber sicherlich nicht im Haushaltsbereich eingesetzt.
    Quelle: http://www.energieverbraucher.de/de/Eich--und-Fehlergrenzen__746/

    Insofern kann es zu Differenzen kommen wenn Du einfach nur addierst.

    Nachtrag: Hier auch noch einmal von offizieller Stelle http://www.eichamt.sachsen.de/576.htm#article614

    Gruß Christoph
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: andreas.maurer am 20 Mai 2014, 15:04:42
    Hallo Christopher,

    danke für die ausführliche Antwort. Allerdings liegen meine Abweichungen jenseits der 20%

    Ich habe mal die Grafik von Mai angehängt. Mal angesehen von den immens hohen Werte / Tag, die aber leider Realität sind, liegt der Durchschnitt, der Einzellzähler bei 16KW und der des Gesamtzählers bei 19 KW. Das lässt sich nicht mehr mit Toleranzen erklären.

    Deshalb bin ich ja auf ein "Auswertungsproblem" gekommen.

    Andreas
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Bennemannc am 20 Mai 2014, 15:11:35
    Hallo,

    also für das 12 * habe ich eine Erklärung. 12 * 5 Minuten ergeben ... eine Stunde. Wenn man mit den Werten arbeitet und Watt bekommen möchte - aber Impulse pro kWh hat, muss man eben mit der Zeit arbeiten. Ich habe das auch bei meiner Auswertung. Ich bekomme alle 15 Minuten einen Wert. Diesen nehme ich mal 4 und bekomme die mittlere Leistung in Watt für die 15 Minuten (1000 imp/ kWh).

    Gruß Christoph
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: andreas.maurer am 20 Mai 2014, 15:22:21
    jau, das macht Sinn. Ich habe mal auf 60 * 60 Sekunden umgestellt. Dann gibt es auch kein Problem beim Übertrag in ein neues Logfile.
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: andreas.maurer am 20 Mai 2014, 15:31:39
    Wobei ich das alles nicht begreife. Hier sind die Funktionen:
    sub countLogEntries($$$) {
    my ($offset, $logfile, $cspec) = @_;
    my $count = getLogEntries($offset, $logfile, $cspec);
    return $count;
    }
    sub getLogEntries($$$) {
    my ($offset, $logfile, $cspec) = @_;
    my $start = strftime("%Y-%m-%d_%H:%M:%S", localtime(time()-$offset));
    my $end   = strftime("%Y-%m-%d_%H:%M:%S", localtime());
    my $loglevel = $attr{global}{verbose};
    $attr{global}{verbose} = 0;
    my @logdata = split("\n", fhem("get $logfile - - $start $end $cspec"));
    $attr{global}{verbose} = $loglevel;
    return @logdata;
    }


    Und das nochmal der Aufruf im at
    Zitatdefine zaehler_haushalt_jetzt_erzeugung at +*00:01 { my $power = 12 * countLogEntries("300", "log_zaehler", "4:::");; fhem("set zaehler_haushalt_jetzt $power W") }

    was summiert denn da überhaupt? Das "4:::"?

    Hier mal ein Auszug aus meinem Log, jetzt aber nur über den 60 Sek Zeitraum:
    2014.05.20 15:23:19 5: exec at command overall_haushalt_jetzt_erzeugung
    2014.05.20 15:23:19 0: countLogEntries - Offset : 60
    2014.05.20 15:23:19 5: Cmd: >get log_overall - - 2014-05-20_15:22:19 2014-05-20_15:23:19 4:::<
    2014.05.20 15:23:19 4: log_overall get: Input file ./log/arduino/overall_2014-05-20.log, from:2014-05-20_15:22:19  to:2014-05-20_15:23:19
    2014.05.20 15:23:19 4: log_overall get: line 1, regexp:, col:3, output lines:9
    2014.05.20 15:23:19 3: get log_overall - - 2014-05-20_15:22:19 2014-05-20_15:23:19 4::: : 2014-05-20_15:22:19 505.59
    2014-05-20_15:22:26 503.95
    2014-05-20_15:22:33 506.37
    2014-05-20_15:22:40 505.47
    2014-05-20_15:22:47 504.04
    2014-05-20_15:22:55 474.33
    2014-05-20_15:23:01 591.56
    2014-05-20_15:23:07 568.36
    2014-05-20_15:23:13 577.94
    #4:::

    2014.05.20 15:23:19 4: dummy set overall_haushalt_jetzt 600 W


    Da frage ich mich, wie da wenn alle Werte unter 600 liegen ein 600W rauskommt.

    Bitte erklärt mir das doch jemand!?!

    Andreas
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: fhainz am 20 Mai 2014, 18:07:47
    Hallo!

    Ich hatte seit längerer Zeit, die erste Version (http://forum.fhem.de/index.php/topic,13155.msg85677.html#msg85677) am laufen. Klappte bei niedrigen Leistung problemlos, bei hohen (über ca. 2500 W) hatte ich öfters Fehlmessungen (manchmal 100% größer) die zwar nicht ständig auftraten aber die Plots wurden dadurch "ruiniert". Anschließend hab ich das Script in die 99_myUtils ausgelagert und ein paar Prüfungen der Leistung vorgenommen. Beim aufruf der Funktion übergebe ich für die Prüfung Minimale Leistung, Maximale Leistung und Maximale Delta Leistung zwischen 2 Messungen. Erst nach dem 2. Messvorgang mit > deltaPower wird das Reading geschrieben um Peaks zu verhindern.
    Das klappte eigentlich ganz gut aber mir kamen die Leistungen trotzdem manchmal zu hoch vor.

    Am Wochenende hab ich dann das Script nochmals umgebaut und speichere nun in einem eigenen Reading die Zeit und greife nicht mehr via oldValue drauf zu.
    Das klappt nun, erstaunlicher weise, wesentlich besser! Leistungs Peaks hab ich mittlerweile kaum mehr und bei höheren Leistungen kommt mir die Leistung eher richtige vor. Ich kann das ganz gut mit den PCA301 vergleichen und zusammenrechnen. Wenn ich zB 300W verbrauche dann den Geschirrspüler anschalte hat das alte Script teilweise doppelt soviel angezeigt wie 300W + PCA301 vom Geschirrspüler.
    Ich hab auch beide Scripte parallel laufen lassen, einen kleinen unterschied gabs bei kleinen Leistungen (unterschied muss sein weil ja die notify nacheinander ausgeführt werden), mit Geschirrspüler gingen die Leistungen teilweise 1000W auseinander.

    Meine 99_myStromUtils.pm häng ich an falls das jemand testen will.

    Ich rufe das Script in einem notify auf das von dem Raspi GPIO getriggert wird.

    DEF:
    sys_s0EingangAllgemein:pin:.off {
      verbrauchBerechnen("triggerDevice","writingDevice",minPower,maxPower,deltaPower);
    }


    zB DEF:
    sys_s0EingangAllgemein:pin:.off {
      verbrauchBerechnen("sys_s0EingangAllgemein","d_stromverbrauchAllgemein",0,7500,300);
    }



    Grüße
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Bennemannc am 20 Mai 2014, 20:16:54
    Hallo Andreas,

    schau Dir doch mal Average an.define Summe_Bezug average SWAP_F1:int_bez.*
    attr Summe_Bezug computeMethod counter
    attr Summe_Bezug nominmax 1
    attr Summe_Bezug room Flur
    Dann bekommst Du im Device
    Zitat
    int_bez
    10
    2014-05-20 20:03:44
    int_bez_avg_day
    12.3
    2014-05-20 20:03:44
    int_bez_avg_month
    17.6
    2014-05-20 20:03:44
    int_bez_cnt_day
    79
    2014-05-20 20:03:44
    int_bez_cnt_month
    1366
    2014-05-20 20:03:44
    int_bez_cum_day
    974
    2014-05-20 20:03:44
    int_bez_cum_month
    24008
    2014-05-20 20:03:44
    Da hast Du doch alles was Du brauchst - musst dann nur noch den richtigen Wert ins Log schreiben.

    Gruß Christoph
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 21 Mai 2014, 07:22:23
    zaehler_haushalt_jetzt_erzeugung berechnet den Durchschnittsverbrauch (in Watt) der letzten 5 Minuten. Summiert wird dabei nichts, sondern gezählt. Ich mache mal ein Beispiel. Sagen wir, Du hast einen Verbrauch von 500 W. In einer Stunde wären das 500 Wh. In 5 Minuten kommen 500/12=41,66 Wh zusammen. Für jede Wattstunde steht eine Zeile im Log, für die Dauer von 5 Minuten also 41 Zeilen. zaehler_haushalt_jetzt_erzeugung zählt die Anzahl der Zeilen der letzten 300 Sekunden (5 Minuten) und rechnet die auf 1 Stunde hoch (*12). Damit kommt man auf 60*12=492. Das ist also der durchschnittliche Verbrauch der letzten 5 Minuten. Aktualisiert wird er jede Minute.

    Habe ich Dich richtig verstanden, dass Du Diesen Wert addierst? Ich denke nicht, dass das eine gute Idee ist. Der Wert gibt nicht die Energie (Wh), sondern die Leistung (W) an; außerdem wird der Verbrauch über 5 Minuten berechnet, deshalb gibt es Überschneidungen. Wenn Du z.B. den 500 W-Verbraucher aus dem Beispiel nach 2 Minuten abschaltest, dann werden in der 1./2./3./4./5. Minute 41/41/33/25/17 Zeilen gezählt und die durschnittliche Leistung von 492/492/396/300/204 Watt berechnet. Die Summe (1884) sagt dabei nichts sinnvolles aus.

    Wichtig ist, dass keine anderen Einträge im Log stehen, da jede Zeile gezählt wird. Das könnte ggf. über den Parameter 4::: gesteuert werden.
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: andreas.maurer am 21 Mai 2014, 08:21:54
    Moin Christian,

    danke für die Erklärung. Z.z. bin ich nur auf der Suche nach einer Erklärung für deinen Code.
    Jetzt erschliesst sich mir das auch. Und die Abweichungen auch.
    Die Methode funktioniert ja nur über einen grösseren Zeitraum. Deswegen wahrscheinlich auch deine Wahl von fünf Minuten.
    Ich hatte mal auf 60 x 60 sec. Intervall umgestellt. dann wurde es noch schlechter. Wäre irgendwie besser, wenn das Intervall eine komplette Stunde wäre. Aber was machen wir mit dem Tagesanfang wo noch nichts im Log ist.

    Ok. So habe ich eine Erklärung für die Abweichungen. Obwohl ... Da muss ich jetzt mal probieren.

    So. Noch als Nachtrag: Anzahl der Logzeilen im GesamtZählerLog 5672 Im Log der EinzelZähler sind dagegen nur 5222 aufgelaufen. Alles von Heute. Das kann nicht zu gleichen Ergebnissen führen.
    Aber in der Theorie hörte sich das schlüssig an.

    Und nach ein paar Minuten nachdenken: Die Methode kann nur funktionieren. Wenn garantiert ein Impuls eines Zählers im Abrechnungszeitraum kommt.

    Danke
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Jakl am 23 Mai 2014, 11:42:11
    Hallo zusammen,

    ich habe den Thread interessiert gelesen (sorry überflogen), Danke Christian für all deinen Input.

    Ein paar kleine Fragen habe ich noch, eventuell sind sie schon beantwortet worden, Entschuldigung dafür! Vielleicht Antwortet ihr mir trotzdem nochmal:
    - Wie ist der Arduino an die FritzBox angeschlossen, per USB? Ich habe eine Raspberry PI, wird er da am einfachsten per USB angeschlossen?
    - Wie sind die S0 Ausgänge genau angeschlossen? Welche Kabel verwendet ihr?

    Was mich aber noch fast am meisten interessiert, blockieren die Abfragen der S0-Anschlüsse per FHEM nicht extrem andere Module? FHEM läuft ja nur in einem Thread und da blockiert doch eine Abfrage (ausser man benutzt blockingcalls) alle anderen. Wie ist da eure Erfahrung?

    Viele Grüße,
    Jakl
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: andreas.maurer am 23 Mai 2014, 12:01:25
    Hi Jakl,

    den Arduino kannst du über USB anbinden oder über Ethernet. Ich lasse es über Ethernet laufen, da der Zählerschrank 15 Meter weg vom Server ist. Das wäre mir für USB zu weit.
    Anschluss an die S0 Klemmen der Zähler ist einfach. Zwei Drähte. GND an S0- und PINx an S0+. Nicht vertauschen. S0 ist kein einfacher Kontakt sondern ein Optokoppler.

    Bei mir läuft ein kleiner Linux Server mit Atom Prozessor. Der ist mit meinen 15 Zählern völlig gelangweilt. Wie das mit der Fritzbox ist? Keine Ahnung.
    Ansonsten meldet aber der Arduino sich bei dem FHEM Prozess. Es tritt nur Last auf, wenn was an fällt. Da wird nicht ständig gepollt.

    Andreas
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Jakl am 23 Mai 2014, 13:25:14
    Vielen Dank für die Antwort.

    Zitat von: andreas.maurer am 23 Mai 2014, 12:01:25
    Zwei Drähte. GND an S0- und PINx an S0+. Nicht vertauschen. S0 ist kein einfacher Kontakt sondern ein Optokoppler.
    Ich bin da total unbedarft was das anbelangt, hast du zufällig nen Link zu nem geeigneten Draht?

    Zitat von: andreas.maurer am 23 Mai 2014, 12:01:25
    Bei mir läuft ein kleiner Linux Server mit Atom Prozessor. Der ist mit meinen 15 Zählern völlig gelangweilt. Wie das mit der Fritzbox ist? Keine Ahnung.
    Ansonsten meldet aber der Arduino sich bei dem FHEM Prozess. Es tritt nur Last auf, wenn was an fällt. Da wird nicht ständig gepollt.

    Bist du dir da sicher? Ich habe jetzt ein wenig an einem anderen Modul mitprogrammiert und dort gesehen, dass sich die einzelnen Module gegenseitig blockieren. Wenn eins arbeitet, stehen alle anderen. Also lese ich in einem Modul A meine Heizung ab, kann keine Info von den Stromzählern kommen. Aber vielleicht irre ich mich da ja und habe da noch nicht alles von FHEM verstanden. :-)
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 23 Mai 2014, 15:10:41
    Zitat von: Jakl am 23 Mai 2014, 11:42:11
    - Wie ist der Arduino an die FritzBox angeschlossen, per USB?
    Das kannst Du machen, wie es Dir am besten gefällt. Ich habe ihn per USB an meine Fritz!Box angeschlossen. Ebenso kannst Du ihn per USB an einen Raspberry Pi anschließen. Ethernet geht auch - Du benötigtst dann ein Ethernet-Shield und hast etwas weniger Platz für Software im Arduino, kannst aber größere Entfernungen überbrücken.

    Zitat von: Jakl am 23 Mai 2014, 11:42:11
    - Wie sind die S0 Ausgänge genau angeschlossen? Welche Kabel verwendet ihr?
    Ich habe einfaches (starres) Telefonkabel genommen, das kann man ohne weitere Vorarbeit direkt in die Kontaktbuchsen des Arduino stecken.

    Zitat von: Jakl am 23 Mai 2014, 13:25:14
    Ich habe jetzt ein wenig an einem anderen Modul mitprogrammiert und dort gesehen, dass sich die einzelnen Module gegenseitig blockieren.
    Das ist grundsätzlich richtig: wenn ein Modul gerade in Aktion ist, müssen alle anderen warten. Allerdings hat Andreas auch schon richtig geschrieben, dass das FHEM-Modul, das für die Messung der S0-Signale zuständig ist (FRM_IN), nur etwas tut, wenn der Arduino ein Signal meldet. Die Wahrscheinlichkeit, dass es andere Module blockiert, ist sehr gering; denn die Verarbeitung eines S0-Signals geht sehr schnell von statten.
    Es kann aber passieren, dass ein anderes Modul die Messung eines S0-Signals verzögert. Es erscheint dann später im Log, und Berechnungen, die auf dem Zeitstempel basieren (z.B. die Ermittlung des Stroms (W) aus der Energie (Wh)) werden verfälscht. Extrembeispiel: ich habe letztens ein Backup von FHEM gemacht. Die Fritz!Box hat dafür 20 Minuten gebraucht. Einige Signale wurden gepuffert und nach 20 Minuten verarbeitet (mit den verspäteten Zeitstempeln). Die meisten Signale sind aber verloren gegangen. Auch das Zeichnen von Diagrammen kann eine Verzögerung von einigen Sekunden bedeuten. Das ist nicht schön, ich kann damit aber leben.

    Ich kann übrigens bei 13 angebundenen Zählern keine nennenswerte CPU-Auslastung an meiner Fritz!Box feststellen.
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Freezer86 am 22 Juni 2014, 14:53:58
    Zitat von: fhainz am 20 Mai 2014, 18:07:47
    Am Wochenende hab ich dann das Script nochmals umgebaut und speichere nun in einem eigenen Reading die Zeit und greife nicht mehr via oldValue drauf zu.
    Das klappt nun, erstaunlicher weise, wesentlich besser! Leistungs Peaks hab ich mittlerweile kaum mehr und bei höheren Leistungen kommt mir die Leistung eher richtige vor. Ich kann das ganz gut mit den PCA301 vergleichen und zusammenrechnen. Wenn ich zB 300W verbrauche dann den Geschirrspüler anschalte hat das alte Script teilweise doppelt soviel angezeigt wie 300W + PCA301 vom Geschirrspüler.
    Ich hab auch beide Scripte parallel laufen lassen, einen kleinen unterschied gabs bei kleinen Leistungen (unterschied muss sein weil ja die notify nacheinander ausgeführt werden), mit Geschirrspüler gingen die Leistungen teilweise 1000W auseinander.

    Meine 99_myStromUtils.pm häng ich an falls das jemand testen will.

    Ich rufe das Script in einem notify auf das von dem Raspi GPIO getriggert wird.

    DEF:
    sys_s0EingangAllgemein:pin:.off {
      verbrauchBerechnen("triggerDevice","writingDevice",minPower,maxPower,deltaPower);
    }


    zB DEF:
    sys_s0EingangAllgemein:pin:.off {
      verbrauchBerechnen("sys_s0EingangAllgemein","d_stromverbrauchAllgemein",0,7500,300);
    }



    Grüße

    Hallo fhainz,

    wie sind deine Erfahrungen mit dem Skript? Bin gerade am Realisieren der Anwendung...

    Grüße
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: fhainz am 22 Juni 2014, 14:57:45
    Hallo!

    Das Script läuft stabil, bei beide Zähler keine Peaks und keine Fehlmessungen bei größeren Leistungen.

    Viel Spaß beim testen!


    Grüße
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Freezer86 am 22 Juni 2014, 15:43:36
    Zitat von: fhainz am 22 Juni 2014, 14:57:45
    Hallo!

    Das Script läuft stabil, bei beide Zähler keine Peaks und keine Fehlmessungen bei größeren Leistungen.

    Viel Spaß beim testen!


    Grüße

    OK. Das mache ich gerne. Kannst du noch den betreffenden Teil aus deiner fhem.cfg posten. Danke!
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: fhainz am 22 Juni 2014, 16:01:34
    Meine 99_myStromUtilts.pm ist angehängt. Diese einfügen und die zählfunktion wie oben angegebn ausführen.
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Freezer86 am 22 Juni 2014, 16:46:00
    Hallo fhainz,

    ich habe in deinem Skript noch eine Änderung vorgenommen, da mein Stromzähler 2000 Impulse pro kWh abgibt. Ich habe Zeile 39 wie folgt abgeändert. "$PulseKWh" steht dabei für die Anzahl der Impulse pro kWh und wird dem Skript übergaben. Hoffe das passt soweit:

    my $power = 3.6 * $PulseKWh / $timeDelta;




    Zitat von: fhainz am 20 Mai 2014, 18:07:47
    DEF:
    sys_s0EingangAllgemein:pin:.off {
      verbrauchBerechnen("triggerDevice","writingDevice",minPower,maxPower,deltaPower);
    }


    zB DEF:
    sys_s0EingangAllgemein:pin:.off {
      verbrauchBerechnen("sys_s0EingangAllgemein","d_stromverbrauchAllgemein",0,7500,300);
    }



    So ganz verstehen tue ich den Aufruf des Skriptes noch nicht. Was für Datentypen müssen "triggerDevice" und "writingDevice" sein. Kannst du ein etwas ausführlicheres Beispiel bringen. So sieht meine fhem.cfg derzeit aus. Fehlt natürtlich noch die Hälfte  :-[


    # --- Firmata Basis-Modul für die Kommunikation mit dem Arduino ---
    define FIRMATA FRM /dev/ttyACM0@57600
    attr FIRMATA room Arduino

    # Pin als digitalen Eingang definieren
    define Stromzaehler_S0 FRM_IN 22
    attr Stromzaehler_S0 IODev FIRMATA
    attr Stromzaehler_S0 alias Stromzähler
    attr Stromzaehler_S0 internal-pullup on
    attr Stromzaehler_S0 room Arduino,Stromverbrauch


    # --- Verbrauch berechnen ---
    # sys_s0EingangAllgemein:pin:.off
    # {
    # verbrauchBerechnen("triggerDevice",
    #                    "writingDevice",
    #                    Pulse per kWh,
    #                    minPower,
    #                    maxPower,
    #                    deltaPower);
    # }

    Stromzaehler_S0:reading:.off { verbrauchBerechnen(Stromzaehler_S0, Stromzaehler_S0, 2000, 0, 7500, 300); }
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: fhainz am 22 Juni 2014, 17:08:15
    ZitatStromzaehler_S0:reading:.off { verbrauchBerechnen(Stromzaehler_S0, Stromzaehler_S0, 2000, 0, 7500, 300); }
    Das ist an der falschen stelle. Der Code gehört wie erwähnt in in den DEF teil des notify's. In den details des notifys siehst du den DEF button.

    sys_s0EingangAllgemein:pin:.off {
      verbrauchBerechnen("sys_s0EingangAllgemein","d_stromverbrauchAllgemein",0,7500,300);
    }


    sys_s0EingangAllgemein = ist das auslösende Device, zB der Raspi Pin
    d_stromverbrauchAllgemein = device in das geschrieben wird, zB ein dummy
    0 = min. Leistung
    7500 = max. Leistung
    300 = allowedDeltaPower

    Ich hab das absichtlich so beschrieben, man "sollte" nie die fhem.cfg direkt bearbeiten, geht alles viel einfacher über das Web Interface. Dazu gabs schon etliche Threads hier.
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Freezer86 am 22 Juni 2014, 18:29:51
    Zitat von: fhainz am 22 Juni 2014, 17:08:15
    Das ist an der falschen stelle. Der Code gehört wie erwähnt in in den DEF teil des notify's. In den details des notifys siehst du den DEF button.


    Ich bekomme es irgendwie nicht hin. Habe jetzt ein Notify angelgt, welches auch abgearbeitet wird, wenn die negative Flanke kommt.
    Leider klappt der Aufruf des Skriptes nicht. Anbei ein Screenshot des Notify und des Eingangs.

    Ergänzung:
    FHEM bringt folgende Fehlermeldung: "Unknown command verbrauchBerechnen("S0_Eingang_Notify","Power",2000,0,7500,300), try help."
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: fhainz am 22 Juni 2014, 20:42:41
    Zitat von: Freezer86 am 22 Juni 2014, 18:29:51
    verbrauchBerechnen("S0_Eingang_Notify","Power",2000,0,7500,300);
    Du hast als tiggerDevice dein notify Device und als writingDevice Power eingetragen. minPower ist bei dir 2000W und maxPower 0. Du hast auch einen Parameter zu viel im funktions Aufruf. Das kann so nicht funktionieren. ;)

    Das sollte vermutlich eher so aussehen:
    verbrauchBerechnen("S0_Zaehler","S0_Zaehler_Verbrauch",0,7500,300);

    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Freezer86 am 22 Juni 2014, 23:57:03
    Zitat von: fhainz am 22 Juni 2014, 20:42:41
    Du hast als tiggerDevice dein notify Device und als writingDevice Power eingetragen. minPower ist bei dir 2000W und maxPower 0. Du hast auch einen Parameter zu viel im funktions Aufruf. Das kann so nicht funktionieren. ;)

    Das sollte vermutlich eher so aussehen:
    verbrauchBerechnen("S0_Zaehler","S0_Zaehler_Verbrauch",0,7500,300);

    Die "2000" kam durch meine Ergänzung Impule pro kWh im Skript. Habe jetzt nochmal das original Skript verwendet. Den Fehler mit dem tiggerDevice habe ich korrigiert. Leider geht es immer noch nicht  :'( FHEM bring folgende Fehlermeldung:
    "S0_Eingang_Notify return value: Undefined subroutine &main::setReading called at ./FHEM/99_myStromUtilts.pm line 27."

    Kann es sein, dass der Fehler beim writingDevice liegt? Die Variable habe ich in der FHEM.cfg wie folgt deklariert:
    define S0_Zaehler_Verbrauch dummy
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: fhainz am 23 Juni 2014, 06:39:20
    Da hab ich wohl auf die setReadings Funktion vergessen. Die Datei im post hab ich ausgetauscht.
    Das kommt noch in deine 99_myUtils rein

    sub setReading($$$){
    my $device       = shift;
    my $readingsName = shift;
    my $readingsWert = shift;

    readingsSingleUpdate($main::defs{$device}, $readingsName, $readingsWert, 1);
    }
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Freezer86 am 25 Juni 2014, 10:20:30
    Zitat von: fhainz am 23 Juni 2014, 06:39:20
    Da hab ich wohl auf die setReadings Funktion vergessen. Die Datei im post hab ich ausgetauscht.
    Das kommt noch in deine 99_myUtils rein

    Jetzt funktioniert das Skript. Danke!  :)

    Wie hast du die Werte für maxPower und deltaPower ermittelt? Geschätzt oder Erfahrungswerte?
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: fhainz am 25 Juni 2014, 10:24:04

    Zitat von: Freezer86 am 25 Juni 2014, 10:20:30
    Wie hast du die Werte für maxPower und deltaPower ermittelt? Geschätzt oder Erfahrungswerte?
    Eine mischung aus beiden ;)
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Spuckiii am 24 August 2014, 21:03:59
    Hallo Leutz,

    ich lese jetzt hier das ganze schon 3 mal, aber verstehen tu ich es noch nicht so ganz. Ich habe von SainSmart Mega2560 AVR ATmega2560 ATMEGA8U2 With Free USB cable geholt. Ich habe 2 Stromzähler von b+g e tech (DRS155DC-V3). Was muss ich jetzt von wem wie machen.
    1) ich habe den Mega mit der configuralbe_firmata bespielt (orignal noch nichts verändert)
    2) die Stromzähler habe ich wie der Hersteller sagte einmal an +5 Volt gelegt und an den Pin 22 (digital)
    3) Pin 22 als FRM_IN deklariert.

    was brauche ich jetzt noch? Pls help me.Irgendwie habe ich die Übersicht verloren. Als Fhem Server nutze ich einen Raspi.
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: fhainz am 24 August 2014, 21:08:59
    Hallo!

    Wofür hast du die Mega wenn du eh ein Rasp Pi hast? Mit dem Raspi alleine kannst du auch schon den S0 Zähler auswerten.

    Ich hab in diesem Thread (siehe hier (http://forum.fhem.de/index.php/topic,13155.msg170335.html#msg170335)) schon eine Anleitung gepostet, zufälliger weise hab ich das Script heute auch in Modul umgewandelt.
    Das Modul reagiert auf den Impuls auf den GPIO und berechnet W, kwH, Ampere und in Zukunft auch €.
    Die Doku muss ich noch machen dann kann ichs zum testen hochladen. Bei mir läufts schon auf meinem Raspi.

    Grüße
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Spuckiii am 24 August 2014, 21:27:38
    Also nehme ich deine StromUtils und packe die zu den anderen. dann nehme ich die sys_s0EingangAllgemein:pin:.off {
      verbrauchBerechnen("sys_s0EingangAllgemein","d_stromverbrauchAllgemein",0,7500,300);
    }
    und ändere das sys_s0Eingang dann ab? wenn ich jetzt mit define ZaehlerWZ FRM_IN 25 setze was muss ich dann in der sys abändern? oder muss ich da was überhaupt abändern?
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 24 August 2014, 21:29:00
    Zitat von: Spuckiii am 24 August 2014, 21:03:59
    Was muss ich jetzt von wem wie machen.
    1) ich habe den Mega mit der configuralbe_firmata bespielt (orignal noch nichts verändert)
    2) die Stromzähler habe ich wie der Hersteller sagte einmal an +5 Volt gelegt und an den Pin 22 (digital)
    3) Pin 22 als FRM_IN deklariert.

    was brauche ich jetzt noch? Pls help me.Irgendwie habe ich die Übersicht verloren. Als Fhem Server nutze ich einen Raspi.

    Wenn Du beim Arduino bleiben möchtest:
    fhainz hat aber Recht: wenn FHEM auf einem Raspberry Pi läuft, kannst Du auch die Stromzähler an dessen GPIO-Pins anschließen und Dir den Arduino sparen.
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: fhainz am 24 August 2014, 21:35:55
    Zitat von: Spuckiii am 24 August 2014, 21:27:38
    und ändere das sys_s0Eingang dann ab?

    ja.

    du musst ein notify erstellen das durch den gpio pin ausgelöst wird. in dem notify rufst du die funktion aus der 99_myStromUtils auf.
    verbrauchBerechnen("sys_s0EingangAllgemein","d_stromverbrauchAllgemein",0,7500,300);
    sys_s0EingangAllgemein = GPIO Device
    d_stromverbrauchAllgemein = dummy Device in dem die Werte geschrieben werden
    0 = min Power
    7500 = Max Power
    300 = Delta Power

    Aber wie gesagt, morgen kann ich das Modul hochladen dann kannst du dir das notify sparen.

    Zitat von: Spuckiii am 24 August 2014, 21:27:38
    wenn ich jetzt mit define ZaehlerWZ FRM_IN 25 setze
    FRM_IN ist ein Modul in Zusammenhang mit Arduino.
    Wenn du den Raspi verwendest musst du die GPIO mit dem RPI_GPIO Modul definieren.
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Spuckiii am 24 August 2014, 21:50:15
    ok. das hab ich jetzt verstanden... Nur 1 Sache habe ich jetzt noch wg. der Verkabelung. Wenn ich den Pin als IN definiere, heisst es ja, der Strom fließt rein, richtig?
    Der Kundensupport von dem Stromzähler schrieb folgendes:

    Bei dem S0 Ausgang handelt es sich um einen Galvanisch getrennten Ausgang welcher über die Klemme 20 eine positive Eingangsspannung von 5 - 27V angeschlossen wird, über die Klemme 21 kommt der Impuls in höhe der Eingangsspannung heraus.

    ... d.h. Masse schließe ich dann an Klemme 20 an und Pinx auf 21?
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: fhainz am 24 August 2014, 21:52:52
    S0+ an 3,3V
    S0- an den GPIO Input
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: fhainz am 24 August 2014, 22:11:59
    Ich hab jetzt noch schnell die englische doku für das modul geschrieben.
    Die erste Version hänge hier an.

    Zitat
    CurrentMonitor

    Define
    define <name> S0CurrentMonitor <impulseDevice> <ReadingsRegEx>

    Exampe:
    define current S0CurrentMonitor gpio4 Pinlevel:.high

    Set
    resetDate
    reset consumption and resetDate


    Attributes
    calcAmpere 1,0
    Calculate ampere
    cosphi
    cosphi. only needed when calcAmpere is 1. standard: 1
    minPower
    Minimum power in Watt. Smaller values will be set so minPower
    maxPower
    Maximum power in Watt. Bigger values will be ignored
    deltaPower
    Allowed difference between last power and current power. If power is bigger than lastPower + deltaPower, first impulse will be ignored, second will be set to power reading
    pulses
    pulses per kwh
    meterType 1+N,3+N
    1 phase or 3 phase meter. Needed when calcAmpere is 1. standard: 1+N

    Ausführlichere und deutsche Doku kommt dann morgen.


    Grüße
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Spuckiii am 24 August 2014, 22:14:59
    Meine Zähler stoßen einen impuls von 30ms aus. und bei 2000 imulse sind es 1 kwh. Muss ich dafür noch irgendwo was beachten?
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: fhainz am 24 August 2014, 22:16:00
    Impulse dauer ist egal.
    Impulse kannst du nur im Modul einstellen.

    Zitatpulses
    pulses per kwh
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Spuckiii am 24 August 2014, 22:45:21
    ich denke ich warte bis morgen, habe es heruntergeladen und danach n restart,
    habe das modul wie folgt
    define current S0CurrentMonitor ZaehlerWz Pinlevel:.high (arduinoPin)
    das device ZaehlerWZ ist auf defined .. und es tut sich nichts mehr
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: fhainz am 24 August 2014, 22:49:47
    Sicher das dein arduino device ein reading Pinlevel hat?
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Spuckiii am 24 August 2014, 22:59:27
    jup setzt fleissig auf on / off... jetzt muss ich es nur noch loggen.... irgendwie
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Bennemannc am 25 August 2014, 07:02:14
    Hallo Spuchiii,

    ich habe so etwas mit einem Panstamp gemacht - also ein Arduino mit Funkmodul. Der sammelt 15min lang Impulse und sendet diese dann an Fhem. Danach werden die Zähler zurückgesetzt und es geht von vorne los. Fhem loggt die (für Grafik) und mit dem Average Modul werden die Tages und Monatswerte gebildet.
    Wenn Du Interesse hast, kann ich Dir den Sketch senden.

    Gruß Christoph
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Spuckiii am 25 August 2014, 07:47:26
    Hallo Bennemannc,

    da ich den Server direkt neben dem Sicherungskasten habe brauch ich die PanStamps (erstmal) nicht.
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Spuckiii am 25 August 2014, 10:22:46
    @fhainz

    wird dann die Auswertung auch automatisch dann irgendwo angezeigt werden, also direkt mit Plot? oder zum. nem Filelog? Oder wie wird die Ausgabe erfolgen.
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Spuckiii am 25 August 2014, 12:00:33
    Ok... Pinlevel steht in den Readings normalerweise. Beim GPIO vom Raspi stehts drinne. Beim Arduino nicht. Wie bekomme ich das rein, gibt es das überhaupt?
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: fhainz am 25 August 2014, 12:31:24
    Natürlich musst anstatt Pinlevel:.high das Reading angeben das beim arduino modul aktualisiert wird.

    Die Auswertung passiert in den power/consumption/ampere etc. Readings. Diese kannst du dann entsprechend loggen und plotten oder was auch immer du damit machen willst.


    Schonmal einen blick in die Einsteiger pdf geworfen?
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Spuckiii am 25 August 2014, 12:42:07
    Hey jetzt klappt es - super. Naja die Einsteiger.pdf hab ich mal überflogen. Trotzdem vielen Dank für die tolle Hilfe und für das Einsteiger PDF gelobe ich Besserung.
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Spuckiii am 25 August 2014, 21:06:38
    Eine Frage hätte ich dennoch, wie habt ihr euer Filelog? Habe das Modul eingerichtet. Meine beiden Zähler produzieren fast jede Sekunde ein Eintrag in das LOG. Das bremst das System ungemein aus. Jemand eine Idee?
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Bennemannc am 25 August 2014, 21:14:53
    Hallo Spuckiii,

    wie gesagt Panstamp - der schickt alle 15 min Daten. Andersherum - auf dem Arduino im Register Counter einrichten, die Impulse aufsummieren und alle xxx Minuten an das Sytem senden. Macht mein Sketch nicht anders, nur das der eben Funkt und nicht z.B. die Daten über eine Schnittstelle (USB / Seriell) ausgibt.
    Die erhaltenen Werte (z.B. 15 min) auf eine Stunde hochrechnen, dann hast Du das 15 Minuten mittel der angeschlossenen Leistung.
    Schau mal da http://forum.fhem.de/index.php/topic,22189.msg194580.html#new rein, vielleicht kannst Du davon etwas gebrauchen.

    Gruß Christoph
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: fhainz am 25 August 2014, 21:15:44
    Oder die suche benutzen. Wurde x mal gefragt. Stichwort event-min-interval
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Bennemannc am 25 August 2014, 21:31:26
    Hallo,

    was passiert bei event-min-interval wenn zwischendurch Werte kommen? Die Impulse kommen ja vom Zähler. Werden diese zwischengespeichert ?

    Gruß Christoph
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: fhainz am 25 August 2014, 21:35:59
    Nein die sind weg. Werden ja nicht benötigt zur anzeige des aktuellen verbrauchs. Impulse aktuelle werte benötige zumindest ich nicht.
    Zum auswerten von tagen/wochen/monaten etc würd ich das hourcounter modul empfehlen.
    Das bringt alles notwendige mit. Das lässt man dann wiederum durch den impuls auslösen.

    Grüße
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Spuckiii am 25 August 2014, 21:45:10
    Hey Bennemannc,
    könntest du mir doch mal dein Sketch zukommen lassen?
    Danke schonmal
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Bennemannc am 25 August 2014, 22:06:10
    Hallo Spuckiii,

    drei Posts drüber ist ein Link - die Zipdatei davon ist der Sketch mit allen dazugehörigen Dateien. Es könnte sein, das Dir die Panstamp libs fehlen, zudem benötigt man noch die Timer.One lib.
    Du musst mal ausprobieren, ob Du den so abändern kannst, das die Panstamp lib nicht benötigt wird.

    Gruß Christoph
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Spuckiii am 25 August 2014, 22:27:02
    Danke für die Info, aber dann lasse ich es vorerst da ich überhaupt keine ahnung von arduino habe
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Bennemannc am 25 August 2014, 22:38:14
    Hallo Spuckiii,

    wenn ich das richtig habe, nimmst Du den Raspi als Eingang und gibst die Daten an fhem auf einer Fritzbox weiter ?
    Alternativ kannst Du natürlich was auf den Raspi programmieren, was die Impulse aufsummiert und im bestimmten Abständen an fhem übergeben.
    Du bekommst ja pro Watt einen (1000 Imp.) oder zwei (2000 Imp.) Impulse. Bei einem "normalen" Grundlast von 300 Watt sind das 300 bzw. 600 Impulse pro Zähler und Stunde. Bei 360 sec. pro Stunde sind das 1-2 Impulse pro Sekunde. Wenn die Kaffeemaschine oder die Waschmaschine läuft entsprechend noch mehr Impulse.

    Gruß Christoph

    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Spuckiii am 25 August 2014, 23:04:27
    naja derzeit habe ich fhem auf dem raspi laufen, und daran, rein zu testzwecken den arduino. derzeit habe ich die 2 Zähler an dem arduino angeschlossen.
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Bennemannc am 25 August 2014, 23:12:52
    Hallo Spuckiii,

    dann würde ich mal in den Sketch schauen. Da werden Register gebildet, die die Counter beinhalten. Diese werden mit jedem Impuls hochgezählt. Wenn Du keinen Watchdog / Sleepmodus einbaust, kannst Du die Zeit zum senden über eine Millis Schleife realisieren. Das wäre eine Abfrage ob der interne Counter (Millisekunden) entsprechend weiter gelaufen ist. Dann wird an Fhem bzw. die Schnittstelle gesendet.
    Ich setze die Zähler nach dem senden zurück. Wenn man die entsprechend groß macht, kann man auch immer absolute Werte übergeben. Diese kann man dann mit difference auswerten.

    Gruß Christoph
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Spuckiii am 26 August 2014, 20:58:08
    @fhainz, lässt du denn jeden Impuls bei deinem Raspi mitzählen? das was ich eigenltich haben möchte ist der verbrauch in KW/h Last o. ä. erstmal noch nicht. Wie gesagt wenn ich beide counter über den Raspi via Arduino zählen lasse legt es mein fhem total lahm...
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: fhainz am 27 August 2014, 06:40:36
    Zitat von: Spuckiii am 26 August 2014, 20:58:08
    das was ich eigenltich haben möchte ist der verbrauch in KW/h

    Das hab ich oben schon erwähnt wie ich das mache.
    Zitat von: fhainz am 25 August 2014, 21:35:59
    Zum auswerten von tagen/wochen/monaten etc würd ich das hourcounter modul empfehlen.
    Das bringt alles notwendige mit. Das lässt man dann wiederum durch den impuls auslösen.

    Grüße
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: tresa am 13 September 2014, 22:22:29
    Hallo zusammen,

    ich würde gerne das SML Protokoll meiner EHZ Zähler auslesen. Hat das schon jemand gemacht?

    Also ich würde mir das folgendermaßen vorstellen:
    2 EHZ an einem Arduino Mega. Ein EHZ ist von der PV Anlage, der andere ist der Zweirichtungszähler vom Versorger. Zum einen könnte man in Fhem die aktuellen Zählerstände anzeigen und zum anderen würde ich gerne die aktuelle Leistung berechnen um z.B. bei Stromüberschuss die Wärmepumpe an zuschalten.

    Könnte das über FIRMATA funktionieren? Bzw. kann man damit die Serielle Schnittstelle vom Arduino auslesen?

    Einen Arduino scratch habe ich bereits dafür, jetzt würde ich die Daten halt gerne im Fhem haben. Eine andere Möglichkeit wäre aber auch, diese Werte vom Arduino irgendwie ins Fhem zu bringen.

    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Damian am 13 September 2014, 22:32:56
    Zitat von: tresa am 13 September 2014, 22:22:29
    ich würde gerne das SML Protokoll meiner EHZ Zähler auslesen. Hat das schon jemand gemacht?

    Ja über einen IR-Lese-Kopf (RS232), bezogen über volkszähler.org und ein angepasstes smlusb-Modul siehe hier:

    http://forum.fhem.de/index.php/topic,14117.msg199640.html#msg199640

    Gruß

    Damian
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: tresa am 13 September 2014, 22:48:24
    Würde das mit den Hager EHZ001 auch funktionieren? Die sind bei mir bereits verbaut.

    Grüße
    Andreas
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Damian am 13 September 2014, 23:01:08
    Zitat von: tresa am 13 September 2014, 22:48:24
    Würde das mit den Hager EHZ001 auch funktionieren? Die sind bei mir bereits verbaut.

    Grüße
    Andreas

    Beide sprechen OBIS, es gibt sicherlich feine Unterschiede siehe hier: http://wiki.volkszaehler.org/software/obis. Du kannst es erstmal mit dem 70_SMLUSB.pm probieren. Ich habe das Modul für meine Zähler angepasst, weil es bei mir nicht richtig funktionierte (bei mir läuft FHEM unter Windows).

    Gruß

    Damian
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: tresa am 14 September 2014, 00:38:04
    Ok, das sieht alles sehr gut aus. Aber wie kann ich die serielle Schnittstelle des Arduinos ansprechen?

    Wenn ich das richtig verstehe hast du den Lesekopf per USB am Windowsrechner angeschlossen?
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 14 September 2014, 07:51:28
    Zitat von: tresa am 13 September 2014, 22:22:29
    Könnte das über FIRMATA funktionieren?
    Firmata ist meiner Meinung nach hier nur sinnvoll, wenn der Arduino noch weitere Aufgaben übernehmen soll. Dann müsstest Du einen weiteren Arduino-Sketch (ein sog. FirmataFeature) schreiben, der als Adapter zwischen Deinem bestehenden Sketch und Firmata fungiert. Soll der Arduino keine weiteren Aufgaben übernehmen, ist es einfacher, den bei Dir bereits bestehenden Sketch direkt an FHEM anzubinden.

    Zitat von: tresa am 13 September 2014, 22:22:29
    Bzw. kann man damit die Serielle Schnittstelle vom Arduino auslesen?
    Dafür brauchst Du Firmata nicht; die serielle Schnittstelle kannst Du ja direkt ansprechen, sobald der Arduino angeschlossen ist. Aus FHEM heraus, oder auch ohne FHEM. Dein Sketch muss dafür entweder selbst regelmäßig die EHZ-Daten auf der seriellen Schnittstelle ausgeben, oder auf Kommandos von außen warten.

    Der von Damian beschriebene Weg kommt ganz ohne Arduino aus; die EHZ werden dabei direkt an FHEM angebunden.

    Ich verwende zur PV-Überwachung übrigens SolarView; auch bei SolarView wird der Zähler direkt (ohne Arduino) per USB angeschlossen. Die Daten stehen dann über das SolarView-Modul auch in FHEM zur Verfügung.
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Damian am 14 September 2014, 12:13:35
    Zitat von: tresa am 14 September 2014, 00:38:04
    Wenn ich das richtig verstehe hast du den Lesekopf per USB am Windowsrechner angeschlossen?

    Den IR-Lese-Kopf kannst du direkt am FHEM-Rechner anschließen. Den gibt es in verschiedenen Versionen (USB, RS232). Ich habe mich für die RS232-Version entschieden, weil ich über 20 m zum Rechner überbrücken musste - USB schafft standardmäßig nur 5 m. Am Rechner selbst habe ich natürlich über einen Adapter die RS232-Signale wieder auf USB umgesetzt.

    Meine angepasste SMLUSB-Version bedient sowohl den Zweirichtungszähler (wie oben beschrieben über D0-Schnittstelle), als auch gleichzeitig einen S0-Zähler für die PV-Anlage, welches über das Modul CUL_EM eingebunden ist. Die beiden Zähler werden bei mir synchron ausgelesen, dadurch kann ich sehr genau im Modul den Eigenverbrauch ermitteln und schön mit Produktion, Einspeisung und Bezug plotten.

    Ich komme ohne weitere Software wie SolarView oder SMA-Spot aus.

    Gruß

    Damian
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: tresa am 16 September 2014, 15:14:49
    Zitat von: Christian. am 14 September 2014, 07:51:28
    Dafür brauchst Du Firmata nicht; die serielle Schnittstelle kannst Du ja direkt ansprechen, sobald der Arduino angeschlossen ist. Aus FHEM heraus, oder auch ohne FHEM.

    Wie kann ich das machen? Die serielle Schnittstelle vom Arduino aus Fhem heraus ansprechen? Ich steh da grad voll auf dem Schlauch wäre super wenn ihr mir da auf die Sprünge helfen könntet.
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: SpenZerX am 16 September 2014, 15:46:58
    Hallo,

    ich möchte meine Elektrik auch mit S0-Zähler ausstatten. Dafür habe ich eine eigene Lösung auf Basis Arduino Due entwickelt.

    Frage ist nun wie man das alles Verdrahtet? Gibt es da Vorschriften, Standards oder ähnliches? Also bezüglich Verlegung und Leitungsmaterial?
    Ich habe erstmal eine Netzwerkleitung zum Gas/Wasser/Gartenwasserzähler gelegt. Für Hallsensoren, Reedkontakte, oder ähnliches.
    Als nächstes möchte ich 1 Phasenzähler mit S0, 2-3 Stück hinter Sicherungen im Zählerschrank schalten (für große Verbraucher). Hauptzähler hat noch kein S0.

    Wie schließt man das alles an ohne das ein Elektriker einen Schrecken bekommt?

    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 16 September 2014, 17:17:31
    Zitat von: tresa am 16 September 2014, 15:14:49
    Wie kann ich das machen? Die serielle Schnittstelle vom Arduino aus Fhem heraus ansprechen?

    In welcher Form sendet der Arduino denn die Daten über die serielle Schnittstelle? Falls Du ein bekanntes Protokoll verwendest, gibt es vielleicht schon ein passendes FHEM-Modul. Bei Firmata wäre das FRM, bei SML könntest Du SMLUSB ausprobieren. Es gibt auch noch weitere, z.B. für ECMD. Wenn Du was eigenes gestrickt hast, musst Du ein passendes FHEM-Modul schreiben; vielleicht gibt es auch etwas allgemeines zum Einlesen von Strings über die serielle Schnittstelle?

    In jedem Fall wird die serielle Schnittstelle, z.B. /dev/usb1 oder COM5, dann als IODev im FHEM-Modul gesetzt.
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 16 September 2014, 17:27:26
    Zitat von: SpenZerX am 16 September 2014, 15:46:58
    Wie schließt man das alles an ohne das ein Elektriker einen Schrecken bekommt?

    Ich habe meine Hutschienenzähler direkt neben oder unter den Sicherungsautomaten platziert und mit einem kurzen Stück NYM-Leitung verbunden; der Querschnitt entspricht der bestehenden Leitung (1,5 mm² oder 2,5 mm²).

    Wenn Du Dir nicht sicher bist, ist es keine schlechte Idee, einen Elektriker hinzuzuziehen.
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: SpenZerX am 16 September 2014, 18:46:40
    Zitat von: Christian. am 16 September 2014, 17:27:26
    Ich habe meine Hutschienenzähler direkt neben oder unter den Sicherungsautomaten platziert und mit einem kurzen Stück NYM-Leitung verbunden; der Querschnitt entspricht der bestehenden Leitung (1,5 mm² oder 2,5 mm²).

    Wenn Du Dir nicht sicher bist, ist es keine schlechte Idee, einen Elektriker hinzuzuziehen.

    1,5mm² für die S0 Leitung?  Ich dachte eher an einen Querschnitt von 0,25mm²
    Alle S0+ an Arduino +5V
    Die  S0- an die jeweiligen Eingänge und Pull Down Konfigurieren.

    Dafür würde ich die Adern einer Netzwerkleitung nehmen. Sollte dann ja für 7 Zähler reichen.

    Oder ist irgendwo ein Denkfehler?
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 16 September 2014, 21:04:44
    Zitat von: SpenZerX am 16 September 2014, 18:46:40
    Ich dachte eher an einen Querschnitt von 0,25mm²
    Dafür würde ich die Adern einer Netzwerkleitung nehmen. Sollte dann ja für 7 Zähler reichen.

    Ich meinte natürlich den Phaseleiter. Für die S0-Signale reicht ein Netzwerkkabel wie von Dir beschrieben. Ich habe bei mir aber S0- an Masse und S0+ an die Arduino-Pins angeschlossen, und setze dann den Arduino-internen Pull-up.
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Bennemannc am 17 September 2014, 14:31:20
    Hallo,

    ich habe das umgekehrt gemacht. Da ich ein Batterieversorgtes Teil habe, arbeite ich mit Pull-Down und geben für den Impuls ein Plus auf den Pin. Dann habe ich keine (noch so kleinen) Ruheströme über den Pullwiderstand.

    gruß Christoph
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: tresa am 17 September 2014, 15:45:31
    Hallo,

    ich glaube ich habe mich etwas schlecht ausgedrückt. Also ich will 2 IR-Sensoren EHZ001 von Hager an die Serielle Schnittstelle 2und 3 vom Arduino Mega hängen. Über diese Schnittstelle werden SML Daten übertragen. Diese Daten will ich ins Fhem übertragen am besten über Firmata. Fhem läuft bei mir zur Zeit noch auf einem alten Windows Rechner, wenn ich den dann mal durch einen Rasberry oder einen neueren REchner ersetzten will hätte ich so am wenigsten Probleme.
    Kennt jemand von euch eine Möglichkeit wie man die Arduino Mega Schnittstellen 2 und 3 über Fhem auslesen kann?

    Vielen Dank für eure Bemühungen.
    Tresa
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: SkobyMobil am 08 Oktober 2014, 16:44:03
    Arduino an S0-Bus, als WSZ-Zähler?

    Hallo,
    ich bin gerade dabei mir ein SmartMetering/EnergieManagement aufzubauen.
    Als erste Grundlage verwende ich einen Arduino Mega 2560 und einen Atmel 328P-
    der den S0-WSZ simuliert. Wenn diese Geschichte steht, dann soll das ganze
    an einen MacMini/Netz zum weiter- verarbeiten gegeben werden.

    Ich habe mir tatsächlich diese 11 Seiten durchgelesen, habe aber so meine
    Bedenken an dem, was hier getrieben wird- oder ich verstehe es nicht...

    Machen wir einmal das Leichte:
    Wo finde ich denn den Sketch "imcount.ino"

    Nun das Schwere:
    Es ist richtig, das ihr die Leitungen des S0-Bus ohne Widerstand am Arduino
    digitalPin betreibt? Also ohne Strombegrenzung? Oder wird der "interne" benutzt?
    5V <-> S0-Plus
    D1 <-> S0-Minus

    nicht-

    D1 <-> (Rx <-> GND) <-> S0-Minus

    Dann das zählen/auswerten der Impulse:
    Die "Länge" des S0-Imp spielt hier ja keine wirkliche Rolle? Es gibt WSZ mit
    einer HighFlanke von 30ms oder auch 50ms.

    Ich messe die Zeit (millis()) zwichen 2 HighFlanken, also:
    High an D1 - millis() starten
    millis() laufen
    High an D1 - millis() stoppen

    Die Differenz zwischen starten und stoppen ist meine Grundlage zur Berechnung.
    Die gemessene Zeit setzt sich also aus x-mal (30/50ms High) + (X Low) zusammen.
    Oder wird am S0 nur die LowFlanke gemessen?

    Jetzt nehmen wir einmal einen S0-WSZ der bei 1kWh, 2000Imp liefert.
    Bei einer maximalen Leistung von 3,680kWh sind das 7360Imp/Std. gleich- alle
    489ms ein Impuls.

    Wenn ich hier nun lese, das einige am Mega weit mehr als einen S0-WSZ
    betreiben- was messen diese dann?

    Die momentare Leistung kann ich mir ja noch vorstellen, aber einen sicheren
    Zählerstand von mehreren S0-WSZ bekommt man damit doch nicht geliefert?

    Von diesen WSZ würde ich ca. 17 Stck. benötigen, was mich nun treibt- ist,
    welche Schnittstelle.

    Bei S0 könnte man zu jedem Zähler einen 328P nehmen, der nichts anderes macht
    als die Impulse zu zählen und sie in einer Variablen zum abrufen an den Mega
    hält.
    Mit dem Mega könnte man so einfach über seriell die ZählerStände abrufen, und
    wenn gewollt auch die MomentarLeistung abrufen.

    Oder nimmt man WSZ mit einer RS-485 Schnittstelle. Diese liefert einen Wechsel
    des Zählerstand sofort- und die MomentarLeistung läßt sich abrufen.
    Vielleicht kann mir ja mal jemand auf die Sprünge helfen.
    Gruß und Dank
    Andreas

    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 08 Oktober 2014, 17:28:00
    Zitat von: tresa am 17 September 2014, 15:45:31
    Kennt jemand von euch eine Möglichkeit wie man die Arduino Mega Schnittstellen 2 und 3 über Fhem auslesen kann?

    Wenn ich Dich richtig verstehe, suchst Du ein Firmata-Feature, das die Daten, die an den seriellen Schnittstellen des Mega eintreffen, über Firmata an den Host übermitteln. So etwas gibt es meines Wissens noch nicht. Firmata-Issue #97 (https://github.com/firmata/arduino/issues/97) ("software serial (and support for additional UARTs)") addressiert genau Dein Problem. Es scheint auch schon Code (https://github.com/kraman/go-firmata/commit/e7742e31a69a2e1f9731db22d5cc27b5c994d0a3) dafür zu geben. Schau es Dir bei Bedarf doch mal an.
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 08 Oktober 2014, 18:05:04
    [
    Zitat von: SkobyMobil am 08 Oktober 2014, 16:44:03Wo finde ich denn den Sketch "imcount.ino"
    Hier (http://forum.fhem.de/index.php/topic,13155.msg96529.html#msg96529)

    Zitat von: SkobyMobil am 08 Oktober 2014, 16:44:03Es ist richtig, das ihr die Leitungen des S0-Bus ohne Widerstand am Arduino digitalPin betreibt? Also ohne Strombegrenzung? Oder wird der "interne" benutzt?

    S0 ist kein Bus, sondern Punkt-zu-Punkt; bei mir: S0+ -> D1, S0- -> GND und Aktivierung des internen Pullup-Widerstandes.

    Zitat von: SkobyMobil am 08 Oktober 2014, 16:44:03Die "Länge" des S0-Imp spielt hier ja keine wirkliche Rolle?
    Genau. Ich verwende wie beschrieben nicht mehr impcount, sondern Firmata. Das macht für das Zählen aber keinen Unterschied. Mit Firmata zähle ich die Dauer zwischen zwei fallenden Flanken.

    Zitat von: SkobyMobil am 08 Oktober 2014, 16:44:03Wenn ich hier nun lese, das einige am Mega weit mehr als einen S0-WSZ betreiben-was messen diese dann?
    Ich habe 12 Zähler und ein bisschen was anderes an einem Mega2560. Ich messe für jeden Eingang die Dauer zwischen den Signalen und rechne das in die momentane Leistung um. Der Zählerstand ergibt sich auch, und zwar aus der Anzahl der Impulse.

    Ich verstehe nicht, wo Du ein Problem siehst. Erscheint Dir der Arduino überlastet? Und welchen Sinn haben die zusätzlichen 328P in Deinem Konzept?
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: SkobyMobil am 08 Oktober 2014, 18:28:58
    Hallo,
    erst mal schönen Dank für Deine Mühe.

    Die 328P sollen nichts weiter machen, als Impulse zählen.
    Das ist der Zählerstand...

    "Der Zählerstand ergibt sich auch, und zwar aus der Anzahl der Impulse"

    Und genau hier habe ich mein Problem.
    Der Arduino kann nur eins nach dem anderen...
    Bei 12 WSZ schaffst Du vielleicht 6 Zähler mit InterruptZauberei und Zwischen-
    Speicher zu lesen und zu halten.
    Das funktioniert aber nur bei geringer Last.
    Wenn Du Zähler 1 bis 6 gelesen hast, und liest 8, wo zählst Du denn die Impulse
    der anderen Zähler- die laufen doch weiter.
    Oder schaltest Du zwischen den Low/HighFlanken weiter und holst Dir nur
    jeweils einen Impuls von den Zählern?
    Gruß und Dank
    Andreas
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 08 Oktober 2014, 20:30:28
    Zitat von: SkobyMobil am 08 Oktober 2014, 18:28:58
    Bei 12 WSZ schaffst Du vielleicht 6 Zähler mit InterruptZauberei und Zwischen-
    Speicher zu lesen und zu halten.
    Wo kommt denn diese Zahl her? Könntest Du vielleicht Deine Annahmen etwas detaillierter erläutern?

    Ich versuche mal eine Beispiel-Rechnung mit den Daten aus meiner Einsatzumgebung, vielleicht hilft das. Meine Zähler liefern 1000 Impulse pro Wh, die Impulsdauer beträgt ca. 60ms. Der Arduino ist mit 16 MHz getaktet. Ich verwende keine Interrupts.

    Die loop()-Methode des Arduino-Sketches liest nacheinander alle digitalen Eingänge ein und sendet im Fall eines Signalwechsels eine Nachricht über die serielle Schnittstelle. Wie lange dauert ein Durchlauf? Ich habe das bei der Entwicklung von impcount.ino mal gemessen: ca. 80 µs im Leerlauf und ca. 600 µs, falls ein Signal gemessen und übermittelt wird (das entspricht also etwa 1280 bzw. 9600 Maschinenbefehlen).

    Lassen wir jetzt mal je 1 Impuls von 20 Zählern direkt nacheinander eintreffen. Wenn die einfach stumpf nacheinander abgearbeitet werden, dauert das also 12 ms. Man könnte natürlich noch optimieren, indem man erst alle Signale eines Durchlaufs sammelt und gemeinsam über die serielle Schnittstelle schickt. Interrupts sind eine weitere Möglichkeit.

    Zu Bedenken ist sicherlich die Kommunikationsgeschwindigkeit. Ich habe mit der seriellen Schnittstelle gearbeitet, es gibt ja auch noch Ethernet oder Funk; das sollte man berücksichtigen, wenn man kein Signal verpassen möchte.

    Zu guter Letzt: die o.g. Zahlen basieren auf impcount.ino. Für Firmata gehe ich von derselben Größenordnung aus. Firmata ist recht effizient implementiert, es werden z.B. 8 digitale Signale mit einem einzigen Befehl gelesen, und das Kommunikationsprotokoll ist ebenfalls sehr kompakt. Aus diesen Gründen und wegen der guten Erweiterbarkeit arbeite ich lieber damit als mit impcount.ino.

    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: SkobyMobil am 08 Oktober 2014, 21:09:07
    Hallo,
    hier habe ich die 12 Zähler her:
    "Ich habe 12 Zähler und ein bisschen was anderes an einem Mega2560"
    Das aber nur am Rande...

    Wie Du es machst, habe ich begriffen. Das bekomme ich auch auf dem Mega
    umgesetzt.
    Theoretisch und rechnerisch funktioniert das bei Dir, ich habe da aber eine
    andere Rechnung, die besagt- das funktioniert so nicht.

    Ich bin mir da aber nicht mehr gaaanz so sicher, ich muß da mal etwas probieren.

    Dann fragte ich nach "Wo finde ich denn den Sketch "imcount.ino"
    Dein Link für auf eine andere Seite, aber nicht zum "downLoaden" zu finden.
    Gruß und Dank
    Andreas
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 08 Oktober 2014, 21:32:27
    Hallo Andreas,

    Zitat von: SkobyMobil am 08 Oktober 2014, 21:09:07
    Dein Link für auf eine andere Seite, aber nicht zum "downLoaden" zu finden.

    mein Link führt zu Antwort #61 in diesem Thread (28.09.2013, 07:22:59). An diesem Beitrag hängt auch die Datei impcount.ino. Vielleicht ist sie nur sichtbar, wenn man eingeloggt ist?

    Schöne Grüße
    Christian
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: SkobyMobil am 08 Oktober 2014, 21:47:03
    Hallo,
    "einloggen" ist das Zauberwort für den Link.

    Ich habe mir noch 2 S0-WSZ bestellt, dann habe ich 3 Stck.
    Wir "rechnen" dann noch einmal...
    Aber bis hier her- erst einmal vielen Dank für Deine Hilfe.
    Gruß und Spaß
    Andreas
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: matthias soll am 05 April 2015, 10:07:35
    Hallo zusammen,
    ich habe in fhem alles eingefügt wie christian auf seit 4 beschrieben hat, aber ich habe große "ausreisser" bei den messwerten:

    2015-04-05_09:54:38 Solarzaehler power: 1.87568 kW
    2015-04-05_09:54:43 Solarzaehler power: 0.87105 kW
    2015-04-05_09:54:43 Solarzaehler power: 103.74308 kW
    2015-04-05_09:54:44 Solarzaehler power: 2.16379 kW
    2015-04-05_09:54:46 Solarzaehler power: 1.82997 kW

    Muss ich noch etwas machen? eventuell software pullups?
    Ich habe auf meinem Mega die configurable Firmata unverändert aufgespielt, viele FRM Out und einen onewire pin mit 10 devices auf dem Bus kann es sein dass der überfordert ist?
    Mir fällt grade noch auf, dass die Ausreisser immer in der leichen Millisekunde auftreten kann das das Problem sein?
    Gruß
    Matthias
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 05 April 2015, 20:52:19
    Solche Ausreißer siehst Du, wenn zwei Signale direkt hintereinander, also mit nur wenigen Millisekunden Abstand, eingehen. Das kann z.B. bei mechanischen Zählern durch Prellen verursacht werden.
    Du kannst dein Device so konfigurieren, dass ein Signal nur dann als gültig gewertet wird, wenn seit dem vorigen Signal eine gewisse Dauer verstrichen ist. Folgende Zeile bewirkt eine Dauer von 1 Sekunde und könnte bei Deinem Problem helfen:

    attr zaehler event-min-interval power:1

    Das zweite Signal wird dadurch ignoriert bzw. geht verloren, je nach Blickrichtung.

    Es könnte auch sein, dass count-mode mit both belegt ist, sodass sowohl steigende als auch fallende Flanke als Signal gewertet werden. Dann sollte eine Änderung auf falling oder rising Abhilfe schaffen.
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Franz Tenbrock am 05 April 2015, 22:13:03
    Hallo Christian, super Sache die mich brennend interessiert.

    ich wühl mich  nun schon 30 min durch den Thread...
    Kannst du nicht im ersten Post den aktuellen Stand anhängen....dann würde sich sicher die eine oder andere Frage erübrigen

    Hier und da wurde ja immer wieder was neues geschrieben, so dass man den Thread wohl  3x mal lesen muss, um keine Fehler zu machen. Ardunio nano flashen, löten etc kann ich ja mittlerweile...
    Will langfristig FS20 entfernen und dann muss was neues für die ESAs her, wenns noch zuverlässiger wäre wäre das super

    "Antwort #70 am: 01 März 2014, 09:31:08 »
    Zitat
    Mir ist gerade aufgefallen, dass ich meine Konfiguration nach dem Post #57 wegen der Pullup-Problematik nochmal geändert habe. Ich habe deshalb den aktuellen Stand angehängt. Einige Funktionen habe ich zwischenzeitlich auch in die Datei 99_myUtils.pl ausgelagert. Ganz wichtig ist das Attribut internal-pullup des Moduls FRM_IN, das Norbert vor einigen Monaten eingebaut hat. Wenn das nicht auf on gesetzt wäre, würde schon bei bestehender Verbindung von Zähler und Ardunio dauerhaft gezählt."
    da gibts auch wichtige Anhänge ?!
    ?
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Christian. am 06 April 2015, 09:19:51
    Zitat von: Franz Tenbrock am 05 April 2015, 22:13:03
    Kannst du nicht im ersten Post den aktuellen Stand anhängen....dann würde sich sicher die eine oder andere Frage erübrigen
    Kein Problem, habe ich gerade gemacht.

    Zitat von: Franz Tenbrock am 05 April 2015, 22:13:03
    Hier und da wurde ja immer wieder was neues geschrieben, so dass man den Thread wohl  3x mal lesen muss, um keine Fehler zu machen.
    Eigentlich nicht. Seit Post #70 (http://forum.fhem.de/index.php/topic,13155.msg143911.html#msg143911) ist von mir nichts mehr hinzugekommen. Ob in den nachfolgenden Threads etwas für Dich dabei ist, kann ich für Dich nicht entscheiden.

    Du beklagst, dass Du hier nicht auf den ersten Blick alles für Dich Interessante findest. Es ist ganz normal, dass ein Foren-Thread schnell unübersichtlich wird, weil er nicht thematisch, sondern zeitlich sortiert ist. Du suchst eigentlich keinen Foren-Thread, sondern eine Schritt-für-Schritt-Anleitung, z.B. in Form eines Wiki-Artikels. Eine solche Anleitung gibt es zur Zeit nicht. Jeder, der ihn vermisst, kann das aber ändern.
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: Franz Tenbrock am 06 April 2015, 09:43:30
    Ich will mich keinesfalls beklagen !!


    nur wenn ich das mache
    kommt wahrscheinlich chaos raus...
    Hab mal einen wiki erstellt, da hab ich mich dann 3 Wochen mit Hilfe anderer durchgequält
    zisterne Ultraschallsensor.
    oder auch mal cubitruck Einrichtung... fhemduino Anleitungen
    Bin halt FHEM infiziert, nur leider fehlt häufig die Zeit ( wie bei den meisten anderen auch )
    Wenn ich was nachbaue, hab ich meist auch eine Anleitung für Dummies geschrieben und die dann auch ins Netz zur weiteren Bearbeitung gestellt, in der Hoffnung das dann hinterher ein Einsteigerleitfaden dabei rauskommt. Es gibt halt hier so viele geile Dinge die man gerne nachbauen würde

    so wie du es jetzt gemacht hast ( gerade nachgesehen) ist ja bestens, Thanks

    War keinesfalls als Kritik gedacht
    Frohe Ostern
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: matthias soll am 07 April 2015, 20:51:02
    @Chriatian danke für die Antwort werde ich ausprobieren.
    Mein Mega hängt im Netzwerk, ich hoffe, dass ich damit nicht Pobleme mit der Zählerauswertung bekomme.
    Ich werde berichten.

    Melde mich jetzt erst weil die email benachrichtigung nicht funktioiert hat, muss ich nochmal neu einstellen.

    Der Beitrag sollte am besten zusammengefasst im Wiki stehen.
    Das Thema ist bestimmt für sehr viele interessant und die Lösung mit Firmata und einem Arduino Mega ist supergünstig und bietet
    sehr viele Möglichkeiten für die Automatisierung.
    Gruß
    Matthias
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: matthias soll am 12 April 2015, 20:52:35
    Hallo zusammen,

    probiere jetzt ca. eine Woche den s0 zähler mit unterschiedlichen ausleseelektroniken zum laufen zu bekommen.
    Mit Firmata ethernet keine chance.
    Ich bekomme immer ausreisser, wahnsinnig hohe werte vermutlich timing probleme.
    Ich denke ich werde auf onewire umrüsten.

    Gruß
    Matthias
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: jnewton957 am 31 Dezember 2015, 15:50:58
    Bekomme Firmata mit ethernet leider auch nicht zum Laufen.

    Fehlermeldung beim Auslesen des readings
    no IODev assigned at ./FHEM/10_FRM.pm line 593

    Habe ein mega2560 mit W5100 E-Shield

    Fimware wie im Wiki beschrieben mit entsprechenden Anpassungen des FHEM Servers geflashed

    fhem. cfg
    define FIRMATA FRM 3030 global
    attr FIRMATA room 99_System
    attr FIRMATA sampling-interval 3000

    ???? Wie teste ich, ob der mega mit shield überhaupt auf 3030 Daten senden kann bzw. im Raspi ankommen können?? FHEM läuft auf Raspi
    192.168.1.31:3030 bringt garnichts (Seite bleibt weiss - keine Fehlermeldung o.ä.).

    Wenn ich mit die Detailseite von FIRMATA ansehe, wehalte ich:
    CONNECTS 2
    DEF 3030 global
    DeviceName  3030
    NAME FIRMATA
    NOTIFYDEV global
    NR 6
    NTFY_ORDER 50-FIRMATA
    PARTIAL
    PORT 3030
    STATE disconnected
    TYPE  FRM


    STATE ist also disconnected
    Dann fhem.cfg wie im Wiki beschrieben aufgebaut
    # 1 Log pro Tag, für alle Zähler zusammen
    # 1 Diagramm je Zähler und 1 Diagramm für den gesamten Haushalt
    etc etc
    Die devices werden korrekt angelegt: counter_wohnzimmer pin 23.
    Aber jeweils count =0

    Habe ich nur einen Gedankenfehler - irgendetwas ganz falsch gemacht ??

    Danke für die Hilfe
    Jörg

    HAPPY FHEM Year 2016

    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: jnewton957 am 31 Dezember 2015, 16:31:28
    Hallo,

    habe es selber gefunden.

    Man muss unebdingt im Router noch ein Portforwarding von port 3030 auf ie IP des Raspi (Port 3030) einrichten.
    Dann einfach noch counter_wohnzimmer mit Attribut IODev FIRMATA versehen.
    .....

    und kaum wartet man einige Sekunden, erscheinen Counts.

    Hoffe die Erläuterung hilft auch anderen.

    Super: Damit habe ich einen ordentlichen Anfangs-Zählerstand für 1.1.2016

    Grüße
    Jörg
    Titel: Antw:Wie kann ich einige S0-Zähler mit fhem auf einer Fritz!Box 7390 auslesen?
    Beitrag von: jnewton957 am 03 Januar 2016, 13:00:22
    Nachdem ich nun die ersten S0 Zähler an meinem mega2560 + E-Shield auf dem Raspi zum Laufen bekommen habe, würde ich gerne mehr Statistiken erhalten.
    In der fhem.cfg und myutils ist der Abschnitt für Tageswerte/Monatswerte des Haushaltes ja in der Anleitung von Christian enthalten. Ich habe aber nicht für alle Geräte/Bereiche einen Stromzähler angeschlossen. Also ist somit der Wert Haushalt nicht vollständig.

    Um mehr Werte für meine angeschlossenen S0-Zähler zu bekommen, habe ich die Module Average und Statistics bemüht.

    define counter_wohnzimmer.stat statistics counter_wohnzimmer
    define avg_ermittlung_energie_haushalt_tag average counter.*power:.*


    Wie wäre denn der cfg Eintrag bzw. myutils, wenn ich für die einzelnen counter_.* (counter_Küche, counter_wohnzimmer etc) entsprechende Tages- und Monatswerte möchte?

    Ich habe schon mal statistics und average jeweils für meine Zähler eingefügt. Aber die Werte passen nicht mit den tatsächlichen Zählerstand. Also habe ich bestimmt wieder einen Gedanken- oder Rechenfehler.

    Readings/Werte von vorhin für Wohnzimmer:

    count 3883
    power70.66 W
    power_avg_day41.5
    power_avg_month77.0
    power_cum_day1569574.23
    power_cum_month22878188.9299999
    power_max_day102.4
    power_max_month2372.2
    power_min_day25.7
    power_min_month24.3
    readingon
    statCountHour: 37 Day: 436 Month: 2539 Year: 2539 (since: 2016-01-02 )
    statCountLastHour: 66 Day: 2103 Month: - Year: -
    statPowerDayMin: 25.73 Avg: 41.44 Max: 102.41
    statPowerDayLastMin: 24.32 Avg: 88.24 Max: 2372.15
    statPowerMonthMin: 24.32 Avg: 93.16 Max: 2372.15 (since: 2016-01-01_16:39:05 )
    statPowerYearMin: 24.32 Avg: 93.16 Max: 2372.15 (since: 2016-01-01_16:39:05 )
    stateInitialized
    time1451813463.84045


    Wie war mein Tagesverbauch gestern ?

    Wieviel habe ich seit 1.1.16 verbaucht ?

    Welche Statistikdaten bekomme ich sonst noch so aus den Werten ?

    Danke für die Hilfe

    Jörg