Kleiner Nachtrag: Die Geschichte mit den drei Batterien klappt natürlich. Mit meiner Erfahrung würde ich aber heute hingehen und ehr 5 oder 6 Batterien nehmen und dann mit einem Festspannungsregler versehen. Einige Sensoren benötigen etwas mehr als die 3.3V und wenn man dann die Spannung auf 4V festlegt funktioniert beides (sowohl der EPS als auch der 5V PIR Sensor z.B.).
Ankündigung
Einklappen
Keine Ankündigung bisher.
Datenübertragung MQTT
Einklappen
X
-
Geb auch kurz meinen Senf dazu.. ich hab hier schon 5 x DS18B20 am testen... funktionieren sehr gut..
Abweichung bei 3 Stück waren ca. 0,1-0,2 Grad bei einem Sensor... hab jetzt noch 3 Stück wasserdicht bestellt..
die sollten auch die Tage kommen.. Anbindung sehr einfach.. ich nutz allerdings den ESP 201, weil der schon
Pinanschlüsse hat.. dafür kostet der auch unglaublich teurere 2,70€
Gruß MartinDie Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.
Kommentar
-
Hallo,
ich muss da noch mal einsteigen da es so ziemlich der einzige Thread zum Thema MQTT ist.
Ich habe jetzt einen Automower mit Robonect. Was ich schon hinbekommen habe:
- IOBroker läuft auf meinem Odroid-Server (mit Dietpi) im Keller
- Automower sendet erste MQTT-Daten
- die kommen in IO-Broker auch an
- wie bekomme ich die MQTT-Daten in den EibPC? Eigentlich möchte ich da die Steuerung realisieren - damit kenne ich mich zumindest ein wenig aus (IO-Broker ist Neuland)
Ich habe schon im Robonect-Forum nachgefragt - aber leider keine Antwort bekommen.
https://forum.robonect.de/viewtopic....t=143&start=10
Ich bin kein Programmierer und kämpfe mich mit Anleitungen meist so irgendwie durch :-) So wie ich das lese bekommt ihr die Daten rein und könnt auch MQTT-Befehle senden (damit ich dem Automower sagen kann: mäh jetzt los oder irgendwann mal: Achtung Regen, fahr in die Station).
Vielen Dank wenn ihr mir verratet wie ihr die Verbindung macht.
Gruß Ralf
Kommentar
-
Hallo Ralf,
bekanntlich führen hier viele Wege nach Rom... Ich habe mir einen Raspi genommen (auf dem auch noch diverse andere Anwendungen in dem Bereich laufen) und habe da mittels zwei kleinen Python Skipten die Anbindung zwischen MQTT und den EibPC Realisiert. Das läuft bei mir jetzt recht stabil, allerdings vermeide ich es Texte über MQTT zu schicken (also nur nummerische Werte). Dennoch klappt das auch mit Robonect (welcher ich auch nutze).
Wie sieht es also nun im EibPC aus... Ich schicke ein Kommando mitCode:if cycle (60,00) and gbw_BrunnenAutom then sendudp(5005u16,192.168.xx.yy,$GPIO16_1/input/69$)....
Daten im EibPC von dem Python Skript zu empfangen geht grundsätzlich so:
Code:Mqtt udpPort=0u16 udpIP=0u32 Data1=$$ Mqtt=event(readudp(udpPort,udpIP,Data1))
Code:PosSep Data1Length PosSep=find(Data1,$:$,0u16) Data1Length=size(Data1) MsgHead MsgPayload PayloadData PayloadTxt MsgHead=split(Data1,0u16,PosSep-1u16) MsgPayload=split(Data1,PosSep+1u16,Data1Length-1u16) PayloadData=convert(MsgPayload,0f32) PayloadTxt= convert(MsgPayload,$$)
Code:if(MsgHead==$WRL/Abluft/humi$) then WRL_AbluftInnenHumi=PayloadData endif
Das Python Script von MQTT zum EibPC sieht so aus:
Code:import paho.mqtt.client as mqtt import sys import socket EibPC_IP='192.168.xx.xx' EibPC_Port=4806 s_udp_sock=socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # The callback for when the client receives a CONNACK response from the server. def on_connect(client, userdata, flags, rc): print("Connected with result code "+str(rc)) # Subscribing in on_connect() means that if we lose the connection and # reconnect then subscriptions will be renewed. client.subscribe("#") # The callback for when a PUBLISH message is received from the server. def on_message(client, userdata, msg): print(msg.topic+" "+str(msg.payload)) s_udp_sock.sendto((msg.topic+":"+str(msg.payload)),( EibPC_IP,EibPC_Port)) client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message client.connect("127.0.0.1", 1883, 60) # Blocking call that processes network traffic, dispatches callbacks and # handles reconnecting. # Other loop*() functions are available that give a threaded interface and a # manual interface. rc = 0 while rc == 0: rc = client.loop_forever() sys.exit(0)
Und dann noch das Script welches vom EibPC an MQTT schickt:
Code:import re import time import socket import paho.mqtt.client as mqtt def on_connect(client, userdata, flags, rc): print("Connected with result code " + str(rc)) client = mqtt.Client() client.on_connect = on_connect client.connect("localhost", 1883, 60) client.loop_start() client.publish("ServerToMqtt", "ONLINE") Quelle='' # Adresse des eigenen Rechners Port=5005 e_udp_sock = socket.socket( socket.AF_INET, socket.SOCK_DGRAM ) #s.o. e_udp_sock.bind( (Quelle,Port) ) #Im IP-Adresse und Port verkn. strg="/" def empfange(): while 1: lastTopic = "" searching = True data, addr = e_udp_sock.recvfrom( 1024 ) clean_data=data[:-1] while searching: topic = "" # print("IN:",clean_data) strPos= clean_data.find(strg) if strPos>=1: # print("Pos>1") topic = lastTopic + clean_data[0:strPos+1] lastTopic=topic clean_data = clean_data[strPos+1:len(clean_data)+1] else: # print("OUT") searching = False # print (lastTopic) # print (clean_data) client.publish(lastTopic,clean_data) # else: # client.publish("Fail/","Sep.not.found") # else: # print("Nothing") empfange()
Ich bin auch kein Programmierer, aber ich habe es so hinbekommen das es einigermaßen läuft ;-)
Hoffe das es dir hilft.
LG
Kommentar
-
Nachtrag: Zum steuern finde ich den EibPC immer noch sehr gut (z.B. die verschiedenen Modi des Rasenmähers anwählen) aber die Visualisierung der Daten mache ich mit Grafana. Dazu musst du nur einen kleine Datenbank (influxdb) auf dem Pi laufen lassen und dann kannst du die Daten perfekt darstellen:
Bildschirmfoto 2019-11-01 um 10.57.55.png
Kommentar
Kommentar