Posts by topsurfer

    Zeile 16 von deinem Beispiel habe ich so geändert, denke das ist was du meintest:
    q.put( (channel, GPIO.input(channel), datetime.now()) )


    In der while-Schleife kann ich dann die Impulszeit als: job[2] auslesen und verwenden.


    Die genaue Auslösezeit benötige ich für die anderen (zwei) GPIO's, welche Strom und Wasserverbrauch erfassen.
    Dort wird die exakte Zeit benötigt,c um zu ermitteln, welche Zeit zwischen zwei Impulsen liegt um hochzurechne, wie der aktuelle kWh (Verbrauch/Stunde) ist ...


    Bei den (drei) GPIO's von der Alarmanlage ist diese genaue Auslösezeit nicht notwendig.

    Habe den Code von hier mal angeschaut (http://codepad.org/b5IkKMY2),
    die Events werden in die Event-Queue geschoben und von dort "nacheinander" abgearbeitet. Und während dieser Abarbeitung können bei anliegenden GPIO-Signalen weitere Jobs in die Queue geschoben werden.


    In der "while" Schleife kann ich den auslösenden GPIO und auch den Signalwechsel (Flanke) erkennen, aber wo sehe ich hier die exakte Auslösezeit des Events?
    Im Codebeispiel steht:
    ...
    triggerTime = time()
    ....


    Aber diese Zeit ist doch die Zeit der Abarbeitung in der While-Schleife, nicht wann der Event aufgetreten ist. Korrekt?
    Müßte/könnte man nicht auch die Auslösezeit dem Queue mitübergeben? Wie? ;-)

    Das mit dem direkten Abfragen anderer GPIO's werde ich testen,
    aber was mir dann negativ aufgefallen ist, das andere Interupts durch die lange Callback-Behandlung nicht erkannt werden. Auch wenn ich das "sleep 1" herausnehme, andere Routinen brauchen auch einige Zeit und dadurch könnten andere "ankommende" Impulse (vom Stromzähler z.B.) nicht verarbeitet werden.


    http://www.forum-raspberrypi.d…thon?pid=262548#pid262548
    Hier lese ich, das es besser ist, zeitaufwendigere Routinen in eine "Queue" hinzuzufügen statt direkt in Callback.
    Wie würde das in meinem Fall aussehen, so eine "Queue"? Aus dem Callback eine Subroutine innerhalb des Python-Scripts starten?
    (wo ist in dem "Zeitmessung Heizung" dieser erwähnte Queue Aufruf realisiert?)

    Hallo,
    neben der Auswertung anderer Signal an GPIO (Wasser- und Stromzähler) habe ich an drei GPIO's auch Kontakte von meiner "Alarmanlage" montiert.
    Ein Schalter dient dazu, die Anlage "scharf" zu stellen (GPIO 27)
    Die zwei anderen sind Türkontake (offen wenn Tür offen), an GPIO 4 und 17


    Die prinzipielle Erfassung der Türimpulse funktioniert (über fallende oder steigende Impulse wird auch erkannt, ob die Tür auf oder zu geht ("... GPIO.BOTH ...")


    Prinzip soll sein:
    1. Tür auf (LivRoom) => Türimpuls (an GPIO 4) wird registriert, in Logfile geschrieben
    2. Jetzt soll überprüft werden, ob Alarmanlage "scharf" ist, also Schalter an GPIO27 geschlossen ist
    3. Wenn "scharf", 1s warten und prüfen, ob die Tür immer noch offen ist (GPIO 4)
    Wenn ja, starte die Alarmaktion (Pushnachricht aufs Handy)
    Wenn nein: Protokolliere einen Fehlalarm


    Bei Schritt zwei habe ich ein Problem, wie kann ich innerhalb eines Interrupt-Aufrufs prüfen, welcher Zustand ein anderer GPIO hat?



    Hier die Teile meines Python-Codes:


    Danke für Tipps, evtl. stehe ich auch nur auf dem Schlauch ;-)

    Als Netzteil wird ein recht hochwertiges verwendet, hängt ausser dem WLAn Stick nichts dran.
    HW ist ein Raspi B.


    Was ist von diesem Mpdell zu halten: https://www.amazon.de/product-reviews/B00194XKXA . (Der hätte auch 300Mbit, wobei bei meiner geringen Datenübertragung (paar KB alle 10s)...)


    am 7.3.2017 schreibt einer:
    "Mit Version 1 dieses Geräts war ich sehr zufrieden. Leider ist Version 2 anders als der Titel suggeriert nicht mit Linux/Raspberry Pi kompatibel. Schade!"


    am 8.3.2017:
    "Dieser WLAN Stick läuft problemlos an dem RaspberryPi mit Raspbian oder OpenElec und auch mit Debian Stable am Rechner. Reichweite und Empfang sind Ok."

    Hi,
    was ich sehen konnte:


    Mar 16 08:17:16 maspi01 kernel: [ 3.183351] usb 1-1.2: Product: RTL8191S WLAN Adapter
    Mar 16 08:17:16 maspi01 kernel: [ 8.063483] r8712u 1-1.2:1.0 wlan0: 1 RCR=0x153f00e
    Mar 16 08:17:16 maspi01 kernel: [ 8.064131] r8712u 1-1.2:1.0 wlan0: 2 RCR=0x553f00e
    Mar 16 08:17:16 maspi01 kernel: [ 8.173375] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
    Mar 16 08:17:16 maspi01 kernel: [ 19.309117] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
    Mar 16 10:11:01 maspi01 kernel: [ 5850.848759] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
    Mar 16 10:11:02 maspi01 kernel: [ 5851.168572] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
    Mar 16 10:11:14 maspi01 kernel: [ 5862.968130] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
    Mar 16 12:17:12 maspi01 kernel: [13061.374200] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
    ...



    VOR dem ersten "Wlan not ready" steht NICHTS drin!


    Habe schon viel Zeit damit verbracht, daher würde ich einfach mal einen anderen tcik testen wollen ...


    Den Stick habe ich gefunden, praktisch wäre so ein Stick wo direkt 20cm USB Kabel beilioegt, um ihn etwas vom Pi wegzubekommen:
    https://www.amazon.de/TP-Link-TL-WN722N-High-Gain-Antenne-WLAN-Empfang-unterst%C3%BCtzt/dp/B002SZEOLG (Affiliate-Link)


    4.5 Sterne (muss nix sagen, ist aber schon mal eine Tendenz ...)

    Hallo,
    mein Raspi bzw. der daran angeschlossene WLAN Stick raubt mir die Nerven, immer wieder bricht die Verbindung weg.
    Aktuell nutze ich einen 10 Euro NoName ("Product: RTL8191S WLAN Adapter"; CSL??)


    # iwconfig zeigt 99% Empfangsstärke sowie "Powermanagement: off"
    Feste IP ist vergeben. Dann geht es wieder 3h gut und schnell, dann wieder für paar Stunden (oder mal nur paar Minuten) keinerlei Verbindung. Und ohne das ich was mache (oder der Pi gebootet hat), auf einmal komme ich mit ssh wieder drauf, und die Webseite ich erreichbar ...


    Aktuell erreiche ich den Rspi wieder mal nicht, weder mit ssh noch über Port 80 (Webseite).


    Daher:
    Was für einen (einfachen) Stick könnt ihr empfehlen?

    Hallo,
    ich habe diverse Raspberry B und kann diese mit einem USB/Serial-Adapter über Putty mit 115.200 Baud ansprechen.


    Bei dem neuen Zero W bekomme ich gar nichts in Putty angezeigt, an HDMI sehe ich, das er bootet und die SD-Karte auch erkennt.
    Aber warum sehe ich nichts (Bootvorgang etc.) an Serial?
    Sind ja die gleichen Ports wie beim Raspi B ... verschiedene Baudraten versucht (115.200 nutze ich i.d.R.)


    Anschluss wie hier gezeigt: http://elektronik-labor.de/Raspberry/RPiZero4.jpg


    Jemand eine Idee?

    Hallo und danke für die tolle Hilfe und Tipps hier !!


    HighCharts werde ich die Demos mal auf dem Tablet (Kindle Fire 8) testen, wie da die Bedienbarkeit und Performance ist.


    Aktuell nutze ich ja eine rrd-"DB", überlege auf SQLite umzustellen.
    Über Shell-Kommandos kann man ja RRD sehr gut "füttern" und auch auswerten ...


    Da ich aus der Unix-Ecke komme, eher die Shell mag (anstatt PHP, Phyton etc.), kann ich die Messdaten damit genauso in die DB bekommen und zur Erstellung von Durchschnittswerten und Diagrammen heraus ziehen oder bedarf es da doch einer anderen Programmiersprache?


    Und: Die Messdaten (Temperaturen (3 Sensoren), Windgeschwindigkeit, Regenmenge, Stromverbrauch, Wasserverbrauch), am besten in eine Tabelle oder mehrere kleine ;-) ?

    Hallo,
    aktuell nutze ich zur grafischen Darstellung von Verbrauchswerten noch rrdtool und die damit erstellten (einfachen) jpgs.
    Vermisse aber die Möglichkeit, im Diagramm direkt z.B. den dargestellten Zeitraum zu ändern, oder in das Diagramm reinzoomen zu können.
    Die Messdaten werde ich dafür wohl in eine mySQL DB schreiben.
    Aber welches Tool würdet ihr für solche "interaktive" Diagramme empfehlen?


    Die Diagramme sollen in eine einfache HTML-Webseite integriert werden (aktuell werden dort einfach jpg-Diagramme angezeigt, die per Cron / rrdtool zyklisch erstellt werden).
    Auf diese HTML Datei wird per Browser zugegriffen (Wand-Tabelt, PC).


    Mit "interaktiv" meine ich z.B. das ich im Diagramm 4 "Buttons" habe, wo ich die Diagrammdarstellung zwischen 4 Stunden, 1 Tag, 1 Woche und 1 Monat umstellen kann.
    Oder wenn ich auf die Kurve klicke, ich en dazugehörigen Messwert angezeigt bekommen.
    ...


    Danke für Tipps,
    Martin

    Zur Verdeutlichung bzgl. "neu schreiben einer Bilddatei ..." und "wenn ein browser sie anfordert...":
    Ich habe in der Wohnung ein Tablet hängen, welches immer diese Daten anzeigt (aktueller Stromverbrauch etc.).


    Die Seite (bzw. zumindest bestimmte Werte) müssen immer recht aktuell sein, aktuell sind das 15s für "Live" Daten.
    Sowie ca. 2 Minuten für Diagramme der letzten Stunden.


    Zusätzlich werden auf de Webseite noch recht statische Daten angezeigt wie die nächsten anstehenden Termine (aus dem Google Kalendar), Prime Time TV-Programm (aus dem www mittels wget ... und diversen greps/awk's aufbereitet ...


    Und da ich mit Shell und Bash groß geworden bin, würde ich wenn möglich gerne diesen Teil weiterhin auf Shell-Ebene abarbeiten.
    Jedes Teilprogramm erstellt einen HTML-Block, das ganze wird am Ende zu einer großen html-Datei zusammengebaut. Und das aktuell im 15s Rhythmus (wobei manche HTML Blöcke nur 1x / Tag erstellt werden, aber eben alle 15s "reinkopiert" werden in das große HTML File, welches alles beinhaltet.


    Meine Idee (Ansatz) war, wenn es so was gibt, das in dieser HTML Datei manche "Felder" (Bereiche) dynamisch sind und sich selbstständig aktuallsieren (ohne das die html-Datei selbst neu geladen werden muss). So etwas gibt es doch auf vielen Seiten; weiß aber nicht, wie das dort dann realisiert ist.


    Und da wäre die (beste) Lösung dann? Ajax?
    Oder andere "Tools"? iobroker?


    Ich habe eben live-Messwerte als Zahl (kwH) und aktueller Kurvenverlauf der letzten 60 Sekunden;
    Langzeitdiagramme, aber auch Bereiche, so "nur" ein tagesaktueller Text drinnen steht ...


    Uff, ich hoffe, man versteht was ich meine ;-)

    Hallo,
    ich sammle von verschiedenen Quellen (Wetterstation, Stromzähler, Wasserzähler, ...) Daten und bereite diese dann relativ einfach mit rrdtool grafisch auf.


    Dies alles geschieht auf Shell-Ebene:
    Eine Endloschleife ermittelt z.B. den Durchschnittsverbrauch der letzten 15s vom Strom.
    Dieser Wert wird zusammen mit anderen Infos in eine immer wieder komplett neu erstellte HTML-Datei geschrieben (welche auch auf per Cron erstellte Diagramme verweist, die z.T. im 5 Minuten Rhytmus neu erstellt werden).


    Das Anzeige-Tablet lädt im 15s Rhytmus immer wieder die index.html Datei komplett neu, incl. der Grafiken, die sich (eigentlich) nicht verändert haben ....
    Wie läßt sich das eleganter lösen, so das nur bestimmte Felder (Text ("0.567kwH" und Grafik vom Stromverbrauch der letzten Minute) sich neu laden, der Rest aber nur im z.B. 2 Minuten Rhytmus komplett neu geladen wird?


    Anbei ein Bsp-Bild, der grüne Bereich sollte "live" Daten/Grafik anzeigen, der balue Bereich reicht alle 2 Minuten.


    In welche Richtung muss ich da am besten schauen / mich einarbeiten?
    PHP, CS5, ...

    Hallo,
    nutze diverse Raspberry, die Daten sammeln.


    Jetzt überleg ich mir, einen "Zentral Server" hinzustellen, der diese Daten entgegenimmt, auswertet und grafisch anzeigt. Gleichzeitig soll dieser Rechner dann auch die Webseite zur Verfügung stellen.
    Auch die "Datenbank" würde dann dort zentral liegen.


    Sollte schon 2GB RAM oder mehr haben und lüfterlos sein, GPIO's benötige ich keine.


    Hat da jemand einen Tipp für so einen kleine, lüfterlosen Mini-PC.
    Muss Linux installierbar sein.

    Hmmm, den letzten Beitrag von mir nicht gesehen, das war eigentlich meine noch offene Frage...


    [ironie on]
    Aber OK, ich werde meine 5 Nachbarn fragen ob sie mit einverstanden sind, wenn ich ein Kabel die Fassade hänge , oder auf dem Gehweg lege.
    [/ironie off]


    Und der Wasserzähler, der soll nicht "direkt am Waschbecken" montiert werden soll, der soll in unsere Haus in die (dicke) Anschlussleitung vom Versorger kommen. "Normal" wäre der Wasserzähler hier vom Versorger, aber da wir ein kleines Energiehaus haben (25m entfernt, hatte ich schon mal geschrieben), sind alle Zähler dort. OK?


    Und warum sollte Geld keine Rolle spielen?


    Und das mit den GPIO's habe ich auch nicht verstanden, der Zähler gibt ein Signal und wird so oder so auch nur ein GPIO belegen ....


    Und was hat die Software damit zu tun, welchen Zähler ich verwende? Die "Software", egal ob FHEM oder was eigenes, will doch nur definierte "Signale" geliefert bekommen (1 Impuls / Liter z.B.) ... Warum wäre diese Info wichtig? Was ändert das an der "Technik" (Raspi bzw. Zähler) ?


    Ist alles bestimmt mein Fehler, das ich nicht deutlich genug das "Umfeld" beschrieben habe ;-)


    Wieviel willst Du denn ausgeben? Für unter 1 EURO findest Du eine Lösung mit vorhandenem Wasserzaehler hier im Forum.


    Hallo,
    wie ich extra im Ausgangsthread geschrieben habe, KANN ICH NICHT den vorhanden Zähler nutzen! Der sitzt zu weit weg, 25m !! Reihenhaus ....


    Mein favorisierter Zähler hat einen Optokopler-Ausgang, das Anschlussbild habe ich als Attachment angefügt.
    Deute ich es richtig, dass der im Bild als "Signal in" bezeichnete Anschluss an +5V angeschlossen wird (mit Vorwiederstand, 1k?).
    Und "Signal out" über ein Pulldownwiderstand (10k ?) auf Masse gezogen werden sollte.
    Und "Signal Out" an einen GPIO des Raspi angeschlossen weren muss?


    Danke!

    Images

    • OPTO.jpg