Wetterstationen der Nachbarn abgesaugt

Der chaotische Hauptfaden

Moderatoren: Heaterman, Finger, Sven, TDI, Marsupilami72, duese

Antworten
Stefan
Beiträge: 381
Registriert: So 11. Aug 2013, 15:14
Wohnort: Köln

Re: Wetterstationen der Nachbarn abgesaugt

Beitrag von Stefan »

Danke Hightech für die detallierten Infos.

Nun verstehe ich/wir schon viel besser was du gemacht hast und können bei Bedarf in den jeweiligen Dokus nachschlagen ;).

Selbstverständlich würde ich mich auch über ein Vorstellung deines/eures Projektes in Form eines Videos oder Livestreams sehr freuen!

PS: Verdammt, jetzt überlege ich mir wieder ein RTL-Stick zu bestellen. Ggf. ein orijinal RTL SDR V3? Dabei habe ich damals mein mit LNA ausgebautets SDR an Axel? auf dem Treffen verkauft, weil es bei mir nur herum gelegen hat :lol:. @Axel, hast du den ggf. noch? :)
berferd
Beiträge: 1339
Registriert: Mi 3. Apr 2019, 23:45

Re: Wetterstationen der Nachbarn abgesaugt

Beitrag von berferd »

Hier übrigens ne etwas einfachere Lösung (hat hier 5 Minuten gedauert) für die ersten Schritte, läuft auch auf normalen Linux-PCs:
https://blog.unixweb.de/433-mhz-aussent ... -auslesen/

Packages installieren, rtl_433 bauen wie beschrieben, RTL-SDR-Stick anstecken, commandline-Tool starten mit

Code: Alles auswählen

rtl_433 -G 4
Schon werden die Wetterstationen (und diverse Reifen-Sensoren) angezeigt.

Wer mehr Bequemlichkeit und Grafik will, kann das Ganze dann noch an den mosquitto_pub prozess pipen auf der commandline, dann folgt der ganze Mechanismus wie beschrieben mit magischen Nodes, kleinen Elfen, Deamonen usw usf.. :lol:
Benutzeravatar
Hightech
Beiträge: 11496
Registriert: So 11. Aug 2013, 18:37

Re: Wetterstationen der Nachbarn abgesaugt

Beitrag von Hightech »

berferd hat geschrieben: Mo 7. Sep 2020, 17:08 Danke!
Was mir konkret z.B. noch nicht klar ist
Der rtl_433 "Treiber" kümmert sich um den DVB-T Stick und stellt decodierte 433Mhz Daten von den Geräten, die er kennt, zur Verfügung:

Code: Alles auswählen

pi@raspi200:~/systemdienste $ rtl_433
rtl_433 version 20.02-137-g1c0ac48 branch master at 202008302143 inputs file rtl_tcp RTL-SDR
Use -h for usage help and see https://triq.org/ for documentation.
Trying conf file at "rtl_433.conf"...
Trying conf file at "/home/pi/.config/rtl_433/rtl_433.conf"...
Trying conf file at "/usr/local/etc/rtl_433/rtl_433.conf"...
Trying conf file at "/etc/rtl_433/rtl_433.conf"...
Registered 135 out of 164 device decoding protocols [ 1-4 8 11-12 15-17 19-21 23 25-26 29-36 38-60 63 67-71 73-100 102-105 108-116 119 121 124-128 130-149 151-161 163-164 ]
Detached kernel driver
Found Rafael Micro R820T tuner
Exact sample rate is: 250000.000414 Hz
[R82XX] PLL not locked!
Sample rate set to 250000 S/s.
Tuner gain set to Auto.
Tuned to 433.920MHz.
Allocating 15 zero-copy buffers
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time      : 2020-09-07 17:31:15
model     : GT-WT02      ID Code   : 20
Channel   : 2            Battery   : 1             Temperature: 21.7 C       Humidity  : 42 %          Button    : 0             Integrity : CHECKSUM
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time      : 2020-09-07 17:31:15
model     : Springfield-Soil                       SID       : 20
Channel   : 2            Battery   : 1             Transmit  : AUTO          Temperature: 21.7 C       Moisture  : 5             Button    : 0             Integrity : CHECKSUM
Der Befehl
rtl_433 -F json
bringt den Treiber dazu, json Objekte auszuwerfen

Code: Alles auswählen

{"time" : "2020-09-07 17:34:15", "model" : "Prologue-TH", "subtype" : 5, "id" : 187, "channel" : 1, "battery_ok" : 1, "temperature_C" : 19.600, "humidity" : 26, "button" : 0}
{"time" : "2020-09-07 17:34:17", "model" : "Hideki-TS04", "id" : 4, "channel" : 1, "battery_ok" : 1, "temperature_C" : 21.100, "humidity" : 54, "mic" : "CRC"}
{"time" : "2020-09-07 17:34:17", "model" : "Hideki-TS04", "id" : 4, "channel" : 1, "battery_ok" : 1, "temperature_C" : 21.100, "humidity" : 54, "mic" : "CRC"}

Dann gibt es eine Software, die die JSON -Objekte per MQTT an den MQTT-Broker schickt,
das ist das rtl2mqtt.py script.
Das wird in der config.py angepasst, das es den MQTT-Boker kennt, entweder den localhost oder hat der Raspi an dem der DVB-T Stick hängt.

config.py

Code: Alles auswählen

# Config section
# Uncomment these lines if your MQTT server requires authentication
#MQTT_USER="mqtt-user"
#MQTT_PASS="mqtt-password"
MQTT_HOST="192.168.1.200"
MQTT_PORT=1883
MQTT_TOPIC="sensors/rtl_433"
MQTT_QOS=0
# End config section
In der rtl2mqtt.py wird beim erkennen des Stings time dann das JSON-Objekt welches time enthält an den MQTT-Brocker gesendet.
Von dem MQTT-Broker holt sich dann Nodered alles was das topic sensors/rtl-433/ hat, das Topic gibt man in der config.py an.

Warum der Aufwand mit dem MQTT-Broker?
Das ist hilfreich wenn der Raspi mit dem DVB-T Stick unter dem Dach hängt und der Server mit der Datenbank im Keller oder im Internet steht.
Dann sendet der Raspi mittels MQTT die Daten an den MQTT Broker irgenwo und kann dann von überall und von jedem Ort gelesen werden.

Also es kann also so sein, das der Raspi mit dem Stick auf dem Dachboden steht und die Daten an den Broker im Internet sendet, weil man da einen Server1 hat. Dann kann man mit Nodered auf dem Server2 die Daten von Server1 "abonieren" und in die Datenbank auf dem ServerKeller speichern. Die Darstellung der Daten kann dann auch wieder der Server1 im Internet manchen.
Diese verknotung macht man dann mit Nodered. Der Server auf welchem Nodered läuft hat aber nicht unbedingt was mit dem ServerKeller zu tun auf dem die Datenbank läuft.

In meinem Beispiel läuft alles auf dem Raspi.


rtl2mqtt.py

Code: Alles auswählen

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

import subprocess
import sys
import time
import paho.mqtt.client as mqtt
import os
import json

from config import *
subtopic=" "
rtl_433_cmd = "/usr/local/bin/rtl_433  -F json" # linux

# Define MQTT event callbacks
def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))

def on_disconnect(client, userdata, rc):
    if rc != 0:
        print("Unexpected disconnection.")

def on_message(client, obj, msg):
    print(msg.topic + " " + str(msg.qos) + " " + str(msg.payload))

def on_publish(client, obj, mid):
    print("mid: " + str(mid))

def on_subscribe(client, obj, mid, granted_qos):
    print("Subscribed: " + str(mid) + " " + str(granted_qos))

def on_log(client, obj, level, string):
    print(string)

# Setup MQTT connection

mqttc = mqtt.Client()
# Assign event callbacks
#mqttc.on_message = on_message
mqttc.on_connect = on_connect
#mqttc.on_publish = on_publish
#mqttc.on_subscribe = on_subscribe
mqttc.on_disconnect = on_disconnect

# Uncomment to enable debug messages
#mqttc.on_log = on_log

# Uncomment the next line if your MQTT server requires authentication
#mqttc.username_pw_set(MQTT_USER, password=MQTT_PASS)
mqttc.connect(MQTT_HOST, MQTT_PORT, 60)

mqttc.loop_start()

# Start RTL433 listener
rtl433_proc = subprocess.Popen(rtl_433_cmd.split(),stdout=subprocess.PIPE,stderr=subprocess.STDOUT,universal_newlines=True)


while True:
    try:
        for line in iter(rtl433_proc.stdout.readline, '\n'):
            if "time" in line:
                mqttc.publish(MQTT_TOPIC, payload=line,qos=MQTT_QOS)
               except KeyboardInterrupt:
        raise
    except:
       print ("Fehler")        # report error and proceed

Benutzeravatar
Hightech
Beiträge: 11496
Registriert: So 11. Aug 2013, 18:37

Re: Wetterstationen der Nachbarn abgesaugt

Beitrag von Hightech »

BTW:
Twich , youtube Stream, big blue butten usw klappt nicht mein "Breitband"Internet reicht nicht!

Was geht ist evtl skype und ich kann screenshots oder codeschnipsel werfen.
Oder wenn jemand wirklich gerade seinen Aufbau liegen hat und es klemmt, machen wir ne skype-teamviever session.
xanakind
Beiträge: 12621
Registriert: So 11. Aug 2013, 21:55

Re: Wetterstationen der Nachbarn abgesaugt

Beitrag von xanakind »

--Bitte--
benutze doch endlich mal die Edit Funktion.
Diese ständigen Doppelpοst´s hintereinander sind unnötig und stören den lesefluss :(
Zuletzt geändert von xanakind am Sa 23. Okt 2021, 00:51, insgesamt 1-mal geändert.
Benutzeravatar
Hightech
Beiträge: 11496
Registriert: So 11. Aug 2013, 18:37

Re: Wetterstationen der Nachbarn abgesaugt

Beitrag von Hightech »

xanakind hat geschrieben: Mo 7. Sep 2020, 18:00 --Bitte--
benutze doch endlich mal die Edit Funktion.
Diese ständigen Doppelpost hintereinander sind unnötig und stören den lesefluss :(
Geht das allen so? Mir ist noch nie was aufgefallen. Ich hab den neuesten Beitrag immer ganz oben, und sehe dann was weiter unten was ich ggF verpasst habe und rolle dann nur soweit runter wie ich es noch nicht gelesen habe.
Und wenn jemand 25 Posts hintereinander abgesetzt hat, und?

Ich bitte um Aufklärung.
Benutzeravatar
sukram
Beiträge: 3118
Registriert: Sa 10. Mär 2018, 18:27
Wohnort: Leibzsch

Re: Wetterstationen der Nachbarn abgesaugt

Beitrag von sukram »

rtl_433 kann übrigens auch direkt mqtt ansprechen, damit habe ich das an meinen Fhem Server angehängt. Ich komme heute leider nicht mehr dazu, mehr Details zu posten, muss in 4h wieder auf Arbeit :roll:
Benutzeravatar
Hightech
Beiträge: 11496
Registriert: So 11. Aug 2013, 18:37

Re: Wetterstationen der Nachbarn abgesaugt

Beitrag von Hightech »

Das ist ja klasse!
Dann kann ich mit die rtl2mqtt.py sparen!
Der Befehl
rtl_433 -F "mqtt://192.168.1.200:1883,user=1,pass=1,events"
bläst mir das ja direkt raus. Das muss man nur einmal als systemd service anlegen und fertig.
Dann nur noch die rtl_433.conf irgendwo im /etc/ anpassen.
Benutzeravatar
Arndt
Beiträge: 2589
Registriert: Fr 28. Jun 2013, 13:42
Wohnort: einen Schritt über den Abgrund hinaus

Re: Wetterstationen der Nachbarn abgesaugt

Beitrag von Arndt »

Manmanman, da geht man mal arbeiten und dann geht hier die Welt unter :?
Sorry Boris, dass ich Dich heute habe "sitzen" lassen...
Sobald der Stick bei mir läuft, kann ich auch mal YT-Video mit OBS machen, quasi ein walktrhough mit Erläuterungen.

Dann fällt uns auch bestimmt noch was ein um neue Sensoren automatisch mit an Influx zu schicken.


Aber grundsätzlich bin ich bei Hightech, es ist sogar absolut tötlich etwas halbherzig zu dokumentieren! Da ist dann halt ein bischen Geduld nicht zuviel verlangt!
Hangele ich mich an einem Tutorial entlang und bleibe irgendwo stecken, bin ich gefrustet und die Webseite mit diesem Tutorial ist für mich gestorben.
Wenn man einmal versucht sich das schnodderige JSON-Zeug auf den originalen "Doku"-Seiten zu begreifen, ist hinterher reif für die Klapse.....
So soll der Faden hier schonmal nicht enden!
bastelbjoern
Beiträge: 605
Registriert: So 12. Okt 2014, 22:46

Re: Wetterstationen der Nachbarn abgesaugt

Beitrag von bastelbjoern »

Hightech hat geschrieben: Mo 7. Sep 2020, 08:30
inse hat geschrieben: Mo 7. Sep 2020, 07:48 Woher kam denn die Magie?
Wer hat die Protokolle entschlüsselt?
Und WIE?
Die Magie Steckt zu einem Teil in den RTL Treibern und in den Skripten. Für interessierte kann ich gerne mal eine Teamviewer Session machen.

Oder kennt jemand einen Dienst bei dem mehrere Zuschauer einer Präsentation zugucken können.?
zoom.us
wenn nicht die Bezahlvariante genommen wird dann nur 40 min. von der offenen Variante fällt mir der Name gerade nicht ein aber da gibt es hier im Forum 2 Server vom.
Benutzeravatar
Sunset
Beiträge: 1516
Registriert: Fr 6. Dez 2013, 15:19

Re: Wetterstationen der Nachbarn abgesaugt

Beitrag von Sunset »

Hightech hat geschrieben: Mo 7. Sep 2020, 08:30 Oder kennt jemand einen Dienst bei dem mehrere Zuschauer einer Präsentation zugucken können.?
Edudip, ist teuer, aber es gibt eine kostenlose Testphase.
Benutzeravatar
Fritzler
Beiträge: 12604
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: Wetterstationen der Nachbarn abgesaugt

Beitrag von Fritzler »

Man könnt ja mal Nextcloud Talk ausprobieren?
Dann kann ich da mal meine Serverinstanz austesten.
Nur hab ich selber weder cam noch Headset.

Wobei, irgendwo im keller liegt vllt noch die sackalte Lego Mindstorms cam mit integriertem Mic :mrgreen:
Hightech, haste Dönerstag Abend (ab 20 Uhr?) mal Zeit zum Testen?
Mehr als nen Browser brauchste eigentlich ned.
Heute hab ich ne Lötfahne :lol:

Klingt auch recht vielversprechend:
Neu in Talk 9
- Sehen Sie sich die neue Kachel- und Sprecheransicht an
- Sie können jetzt Dateien direkt von Ihrem Gerät in den Chat hochladen und per Drag'n'Drop übertragen.
- Geteilte Dateien werden jetzt direkt in der Chat-Ansicht mit den Betrachteranwendungen geöffnet
Benutzeravatar
Hightech
Beiträge: 11496
Registriert: So 11. Aug 2013, 18:37

Re: Wetterstationen der Nachbarn abgesaugt

Beitrag von Hightech »

Fritzler hat geschrieben: Di 8. Sep 2020, 08:46 Man könnt ja mal Nextcloud Talk ausprobieren?
Ja, das teste ich mal.
Benutzeravatar
Hightech
Beiträge: 11496
Registriert: So 11. Aug 2013, 18:37

Re: Wetterstationen der Nachbarn abgesaugt

Beitrag von Hightech »

Es ist ja geradezu Öde:
mit dem Befehl

Code: Alles auswählen

rtl_433 -F influx://192.168.1.200:8086/write?db=temperatur
wirft das Programm rtl_433 die Sensordaten DIREKT in die influxdb.

Influxdb

Code: Alles auswählen

> SELECT *FROM  "Hideki-TS04"
name: Hideki-TS04
time                Humidity Temperatur battery_ok channel humidity id mic temperature_C
----                -------- ---------- ---------- ------- -------- -- --- -------------
1599577696017375848                     1          1       65       4  CRC 18.299999
1599577697590035361                     1          1       65       4  CRC 18.299999
1599577709647898278                     1          3       80       7  CRC 19
1599577711220801175                     1          3       80       7  CRC 19
In Grafana kann man dann nach Kanal und id filtern, keine Node-Red Magie erforderlich.

Code: Alles auswählen

SELECT mean("temperature_C") FROM "Hideki-TS04" WHERE ("channel" = '1' AND "id" = '4') AND $timeFilter GROUP BY time($__interval) fill(none)
Außer man möchte die Daten weiter verwursten und noch was steuern damit, aber da kann man ja die Daten aus Influx wieder rausziehen.
Wobei es schon schön ist, in Grafana die Daten eines speziellen Sensor inclusive der ID und Channel auswählen zu können, also z.B Hideki-TS04_3_1


Weiß jemand wie ich in Grafana den Regensesor ordentlich darstelle?
Der Regensensor zählt immer weiter, ich möchte aber die letzte Stunde und Tage und Wochen.

Z.b kommt, wenn es trocken ist immer der Wert 317mm, wenn es dann regnet wird der immer nur erhöht, jetzt möchte ich die relative Änderung der letzten Stunde anzeigen, wie mache ich sowas in der Datenbankabfrage?
Benutzeravatar
Fritzler
Beiträge: 12604
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: Wetterstationen der Nachbarn abgesaugt

Beitrag von Fritzler »

Das mit dem Nextcloud Talk lief ja schonmal ganz gut, wenn mein Laptop nicht auf einmal Lust gehabt hätte kein Audio mehr zu haben.
Bei Hightech ist das DSL etwas schwachbrüstig, wodurch Bildschirmfreigaben auf das jeweilige Fenster (SSH/CodeEditor) eingegrenzt werden müssen.
Die Frage ist wieviele Leute er dann bespaßen kann, weil Nextcloud Talk eben PeerToPeer ist.
Also bei insgesamt 5 Leuten brauch er 4 Upstreams.

Was noch zu testen wäre sind öffentliche Links zu einem Talk, damit nicht jeder auch einen eigenen Account braucht.
Sowie ein Projekt anlegen und öffentlich schalten, damit Sourcen/Configs abgesaugt werden können.
Aber erstmal den Sound aufm Laptop reparieren.
Antworten