[vz-users] DHT11

Frank Richter frank.richter83 at gmail.com
Sat Jan 26 16:37:28 CET 2019


Hallo Peer,

mir ist gestern auch nicht aufgefallen, dass ich auf deine Mails gar nicht
an die Liste antworte.

@all: die Vorgeschichte ist unten nachzulesen, sorry!

Wie schon geschrieben habe ich schon verschiedentlich mittels D0-Protokoll
Daten von Arduino-Projekten mit vzlogger geloggt. Beispielsweise folgende
Ausgabe wird von vzlogger verstanden:

/ABC5
1-0:1.7.0*255(137.5*W)
!

Die dazu passende Kanaldefinition muss den Identifier "1-0:1.7.0"
enthalten, dann extrahiert vzlogger den gesuchten Wert 137.5.
Natürlich kannst du zwischen der Einleitungssequenz und dem abschließenden
Ausrufezeichen beliebig viele Zeilen mit Identifiern und Werten nutzen.

Für mich ist das eine praktikable Möglichkeit, Daten selbst entwickelter
Gerätschaften zu loggen und trotzdem die Annehmlichkeiten von vzlogger wie
Aggregation, Versorgung des Push-Servers und Pufferung zu nutzen.

Natürlich wär's schön, wenn vzlogger auch mit anderen seriellen Protokollen
umgehen könnte wie du angeregt hast, aber wenn du das nicht selbst
entwickelst, sehe ich dafür aktuell schwarz...

Grüße
Frank

Am Sa., 26. Jan. 2019 um 01:09 Uhr schrieb Peer Janssen <peer at pjk.de>:

> Im Prinzip ja, aber ich kenne weder D0, noch weiß ich, was vzlogger mit
> dem UART macht oder wie vzlogger das dann auseinandergeschnippelt.
>
> Außerdem weiß ich nicht, wie ich den Sensor "Radioaktivität" im Frontend
> wählen kann. Ich habe ja versucht, das Modell dafür zu liefern, damit es in
> die Software mit aufgenommen werden kann, aber da hören meine Kenntnisse
> schon auf. Ich müsste mich also auch erst in die Frontend-Programmierung
> einarbeiten, damit ich die Werte richtig hinbekomme.
>
> Den AVR im Geigerzähler habe ich vor vielen Jahren programmiert. Auch da
> müsste ich mich erst wieder reindenken. Außerdem ist ein großer Teil meiner
> Elektronikbastelkiste in einer 750 km entfernten Stadt.
>
> Ist D0 nicht eine Norm für Stromzähler? Macht es Sinn, da ein eigenes
> Format ranzufrickeln, das dann nicht der Norm entspricht? Wäre es dann
> nicht besser, im vzlogger ein neues Messgerät für zeilenweise eintreffende
> UART-Daten zu definieren, mit einem Format-Parameter, der das Herauslösen
> des Wertes ermöglicht?
>
> Ansonsten kann ich ja meine PC-Lösung übernehmen und die Werte (wie für
> den DHT11) direkt in die DB schubsen. Das kann ich. Ob das so gut ist, wie
> den vzlogger zu verwenden, weiß ich nicht. Aber ihr habt lange daran
> gearbeitet, der ist vielleicht stabiler und somit vorzuziehen. Aber um das
> zu beurteilen, müsste ich noch mehr lernen... Alles zugleich geht aber
> nicht.
>
>
> Am 26.01.19 um 00:24 schrieb Frank Richter:
>
> Hi Peer,
>
> wenn in deinem Geigerzähler eh ein selbst programmierter AVR steckt,
> kannst du doch dem D0 beibringen und auf dem Pi dann vzlogger nutzen. So
> hab ich das schon mit einigen Arduino-Projekten gemacht, funktioniert
> problemlos.
>
> Grüße
> Frank
>
> Am Fr., 25. Jan. 2019, 22:52 hat Peer Janssen <peer at pjk.de> geschrieben:
>
>> Von Geigerzählerimpulsen. Die sind unregelmäßig und dosisabhängig. Bei
>> 120-150 Imp/min. Nullrate wären das 2-3 pro Sekunde. Aber es kann im Fall
>> des Falles auch mehr werden, und gerade dann möchte man keine Impulse
>> verlieren, um einen zuverlässigen Messwert zu haben. (Offizielle Stellen
>> sind nicht vertrauenswürdig, wie sie immer wieder gezeigt haben.)
>>
>> Ich hab das mal mit dem NMI in einem AVR-Mikrocontroller gelöst, der nur
>> schnell einen Zähler inkrementiert, damit möglichst wenig verloren geht.
>> Daher meine Fragen.
>>
>> Die Impulse direkt auf einen Raspi zu geben, könnte nämlich Hardware
>> einsparen, wenn das gut läuft. Problematisch wird's aber, wenn die
>> Interrupts unregelmäßig geblockt werden, weil das Verhalten dann nicht mehr
>> so recht vorhersagbar ist. Bei einem kompletten PC (auch wenn er Raspi
>> heißt) ist das vermutlich ungünstig. Ich habe aber Null Ahnung, wie in
>> Linux im Allgemein und im Raspi im Speziellen mit Interrupts umgegangen
>> wird bzw. werden muss.
>>
>> Statt eines NMIs könnte man auch einen Porteingang mit einem
>> Hardware-Zähler nutzen, muss dann aber den Überlauf richtig abfangen und
>> auswerten (also mitzählen). Aber meine Lösung ist schnell genug, daher
>> hatte ich daran nichts geändert. Das war alles, bevor es den Raspi gab.
>>
>> An sich habe ich auch schon Skripte unter Linux, mit denen ich die Daten
>> annehmen und loggen kann. Ich hatte gehofft, mit dem VZ ließe sich das
>> verbessern und einfacher machen. Natürlich kann ich die Daten mit eigenen
>> Skripten auch irgendwie direkt in die Middleware schieben, sogar auch
>> direkt in die Datenbank (statt über die php-API). Das wäre wohl meine
>> zweitbeste Variante. Immerhin bleibt mir so die Programmierung des
>> Frontends gespart. Das hat zwar auch seine kleinen Quirks (beim Umzoomen),
>> gefällt mir aber trotzdem gut.
>>
>> Ich dachte allerdings, dass Geigerzähler besser in den VZ integriert
>> sind. Als ich das Projekt mit Justin gestartet hatte, hatten wir nur
>> Impulse, und zwar aus S0-Hutschienenzählern und eben aus dem Geigerzähler.
>> Aber es ist dann wohl unterwegs verloren gegangen.
>>
>> Schöne Grüße
>>
>> Peer
>>
>>
>> Am 25.01.19 um 22:12 schrieb Frank Richter:
>>
>> vzlogger ist eben für elektronische Stromzähler gemacht, zunächst mal für
>> D0 und SML. Später kam Unterstützung für S0-Impulse und 1-Wire-Sensoren
>> dazu.
>>
>> Zur Einbindung von verteilten Sensoren bietet sich z.B. der ESP866 mit
>> ESPeasy an. Dazu findest du auch was im Wiki.
>>
>> Mit Impulszählern hab ich selbst keine Erfahrung, deshalb kann ich dazu
>> nicht viel sagen. Von welchen Frequenzen reden wir?
>>
>> Grüße
>> Frank
>>
>>
>> Am Fr., 25. Jan. 2019, 21:49 hat Peer Janssen <peer at pjk.de> geschrieben:
>>
>>> Ich stimme Dir weitgehend zu. Den DHT11 hatte ich hier rumliegen und er
>>> war irgendwie schneller eingebaut. Die Werte sind dennoch als Relativwerte
>>> vorübergehend nützlich. (Und auch zur Demonstration der Ungenauigkeit.)
>>>
>>> Erübrigt sich denn die Scriptelei, wenn ich einen anderen Sensor nehme?
>>> Sind die anderen Sensoren besser in VZ integriert? Einen BMx280 habe ich
>>> hier auch noch und möchte ihn auch nutzen, aber vermutlich an anderer
>>> Stelle.
>>>
>>> Wenn ich das Wiki mit seinen Anleitungen durchsuche, scheinen sich aber
>>> auch da letztlich dieselben Fragen zu stellen:
>>>
>>> - Kann ich mit den Bordmitteln der Bash eine ein- oder mehrzeilige
>>> Ausgabe auf zwei Variablen aufteilen?
>>>
>>> - Oder geht das direkt im vzlogger mit der Formatierungsfunktion nach
>>> dem Scriptaufruf?
>>>
>>> Ich hatte erst eine Weile mit FHEM rumprobiert. Da scheinen viele
>>> Sensoren mehr oder weniger out of the box unterstützt zu werden. Aber das
>>> ist ja mehr ein Event-Reaktions-Framework als ein Messprotokoll, obwohl es
>>> beides kann. Nachdem mir aber der Raspi damit unerwartet abrauchte
>>> (startete einfach nicht mehr), hab ich mir gedacht, ich versuch's mal mit
>>> dem Volkszähler, weil der das Messen und Aufzeichnen als Hauptfunktion hat.
>>>
>>> Nach Deinen Antworten verstehe ich nun aber nicht mehr so genau, wozu
>>> der vzlogger selbst gut ist, wenn man eh so viel selbst scripten muss.
>>>
>>> Außerdem würde mich interessieren, ob Zählimpulse gepollt oder über
>>> Interrupts erfasst werden, und wie hoch die Wahrscheinlichkeit ist, Impulse
>>> zu verlieren, insbesondere, wenn man eine deutlich schnellere,
>>> unregelmäßige Quelle hat.
>>>
>>>
>>> Am 25.01.19 um 21:14 schrieb Frank Richter:
>>>
>>> Hallo Peer,
>>>
>>> tu dir einen Gefallen und nimm einen vernünftigen Sensor. Die DHT11 mit
>>> ihrer miesen Auflösung und einer Feuchtemessung, die nach dem Mond geht,
>>> sind IMHO den Aufwand nicht wert.
>>> Alternativen: SHT31, Si7021, BME280,...
>>>
>>> Grüße
>>> Frank
>>>
>>> Am Fr., 25. Jan. 2019, 19:02 hat Peer Janssen <peer at pjk.de> geschrieben:
>>>
>>>> Moin!
>>>>
>>>> Ich habe einen DHT11 am Raspi, der auch seine Werte liefert.
>>>>
>>>> Genutzt habe ich die Anleitung nach
>>>>
>>>> https://wiki.volkszaehler.org/_export/code/hardware/channels/sensors/dht22?codeblock=3
>>>> ,
>>>> allerdings das Script loldht durch die aktuellere Version des
>>>> "AdafruitDHT.py" ersetzt, das auch den DHT11 abfragen kann (außerdem
>>>> DHT22 und noch eine andere Type). Die Werte meines etwas veränderten
>>>> Scripts (aufgerufen durch cron) landen in einer Logdatei, die so
>>>> aussieht:
>>>>
>>>> 2019-01-25_18:31 [DHT11] Temp=18.0*  Humidity=16.0%
>>>> 2019-01-25_18:32 [DHT11] Temp=18.0*  Humidity=16.0%
>>>> 2019-01-25_18:33 [DHT11] Temp=20.0*  Humidity=23.0%
>>>> 2019-01-25_18:34 [DHT11] Temp=18.0*  Humidity=16.0%
>>>>
>>>> Nun bin ich mit dem Beispielscript aber nicht zufrieden. Um diese zwei
>>>> Werte in die Middleware zu schicken, werden nacheinander folgende
>>>> Programme aufgerufen:
>>>>
>>>> bash, loldht, grep, date, echo, awk, echo, awk, echo, sed, echo, sed,
>>>> echo, wget, echo, echo, sed, echo, sed, wget
>>>>
>>>> Das sind 20 Programmaufrufe -- das sieht mir nach Overkill aus. Da ich
>>>> loldht nicht mehr verwende, sondern AdafruitDHT.py (das auch nur ein
>>>> wrapper um eine python-Library ist), kann ich die Werte auch direkt im
>>>> Python-Script formatieren wie gebraucht. Das wäre dann nur ein einziger
>>>> Script-Aufruf im cron-Job statt mehrerer anderer. Allerdings weiß ich
>>>> nicht, wie ich die Ausgabe formatieren müsste, sodass sie dann direkt,
>>>> ähnlich wie im Beispielscript, mit wget in die Middleware geschickt
>>>> werden kann, ohne x mal echo, sed und awk zu belästigen. Ich kenne
>>>> nämlich bash und deren (interne!) string-Dissektoren nicht gut genug
>>>> dafür. Hat da jemand eine Idee? Falls nicht, ließe sich die middleware
>>>> aber auch direkt im python-Script ansprechen.
>>>>
>>>> Nun sehe ich aber, dass vzlogger so konfiguriert werden kann, dass ein
>>>> Script aufgerufen und anhand eines Formatstrings der Wert aus dessen
>>>> Rückgabewert entnommen wird. Ist damit die alte Lösung mit dem
>>>> Beispielscript im Grunde obsolet? Ich habe nämlich den Eindruck, dass
>>>> das VZ-Wiki in einem Status zwischen einer alten und einer neuen Version
>>>> ist, bei der mir nicht recht klar ist, ob da Altes schon Obsoletes
>>>> geworden ist. Nun weiß ich aber nicht, ob der Formatstring so angegeben
>>>> werden kann, dass ich die beiden Werte aus der Scriptausgabe extrahieren
>>>> kann. Falls nicht, erscheint mir doch ein cron-Job mit einem eigenen
>>>> Script in Python die bessere Lösung.
>>>>
>>>> Tipps dazu?
>>>>
>>>> Gruß, Peer
>>>>
>>>>
>>>> --
>>>> Peer Janssen - peer at pjk.de
>>>>
>>>>
>>>> --
>>> Peer Janssen - peer at pjk.de
>>>
>>> --
>> Peer Janssen - peer at pjk.de
>>
>> --
> Peer Janssen - peer at pjk.de
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-users/attachments/20190126/b466b4cc/attachment-0001.html>


More information about the volkszaehler-users mailing list