mois
May 19, 2023, 10:46pm
1
ich bitte um tipps (bzw. um username und passwort , denn vielleicht liegts ja daran): ich möchte (nämlich zum ersten mal überhaupt per mqtt) daten einspeisen bei hiveeyes, die ich bereits woanders hochgelanden habe und nun von dort ziehe (erspart mir erstmal die um-/neuprogrammierung des sensor-nodes selbst). folgendes script erledigt die arbeit:
#!/bin/sh
while :
do
curl -X 'GET' 'https://data.sensor.community/airrohr/v1/sensor/70795/' -H 'accept: */*' -s | jq '.' > datadump.json
cpm=`cat datadump.json | jq -r '.[0].sensordatavalues[0].value'`
time=`cat datadump.json | jq -r '.[0].timestamp'`
time=`date --date=@$(date -u "+%s" --date="$time") '+%Y-%m-%d %H:%M:%S'`
sv=`echo "$cpm/60*0.081438" | bc -l | awk '{printf("%.3f \n",$1)}'`
# publish to hiveeyes
# define target address
BROKER=swarm.hiveeyes.org
CHANNEL=hiveeyes/27041c2a-8afd-4a1e-b3ae-44233fa1f06b/mois/yun
# send data
echo '{"geiger_CountPerMinute": '$cpm', "geiger_GammaRadiation": '$sv' }' | mosquitto_pub -h $BROKER -t $CHANNEL/dat>
echo 'Sending CountPerMinute='$cpm', GammaRadiation='$sv'µSv/h ...'
sleep 130
done
das mit der datenextraktion klappt. das script läuft durch:
me@mois:~$ bash /home/me/log-geiger.sh
Sending CountPerMinute=86, GammaRadiation=0.117 µSv/h …
Sending CountPerMinute=79, GammaRadiation=0.107 µSv/h …
Sending CountPerMinute=74, GammaRadiation=0.100 µSv/h …
Sending CountPerMinute=79, GammaRadiation=0.107 µSv/h …
Sending CountPerMinute=73, GammaRadiation=0.099 µSv/h …
Sending CountPerMinute=83, GammaRa…usw…
aber ich sehe nichts ankommen bei Wtee
ich habe mich an der hiveeyes-anleitung für mqtt-datenübermittlung orientiert.
hätte ich sonst noch was berücksichtigen müssen? (sicher, sonst würds ja klappen ;-)
für alle hinweise im voraus dankbar: markus
Ja, bestimmt. Kann ich Dir morgen gern einrichten.
mois
May 19, 2023, 11:10pm
3
super. eilt nicht. ich freu mich.
m
1 Like
mois
May 21, 2023, 8:02am
4
jetzt sind alle panels bereit - fehlt nur noch der datenfluss…
Hi Markus,
ich habe Dir gerade Zugangsdaten für folgenden Kanal per PM geschickt. Das ist Deiner, stimmts?
Ansonsten könntest Du aber auch eine kürzere Imker ID bekommen, wenn Du magst.
Viele Grüße,
Andreas.
mois
May 22, 2023, 7:46pm
7
danke!
und: gerne auf irgendwas kurzes sprechendes umstellen, z.b. “mois” oder “b-mois”. oder muss ich dann in den bestehenden desktops alle panels und abfragen und alles manuell umstellen? dann lieber erstmal nicht.
mois:
danke!
Gerne! Viel Freude bei der Datenakquise und -beobachtung.
Genau.
Ack ;].
mois
May 22, 2023, 11:40pm
9
danke mal wieder!
jetzt laufen die daten rein:
der vollständigkeit halber nochmal meine scripte.
log-geiger.sh:
#!/bin/sh
export PYTHONPATH="/home/me/.local/lib/python3.9/site-packages:/home/me/beescale"
while :
do
curl -X 'GET' 'https://data.sensor.community/airrohr/v1/sensor/70795/' -H 'accept: */*' -s | jq '.' > datadump.json
cpm=`cat datadump.json | jq -r '.[0].sensordatavalues[0].value'`
time=`cat datadump.json | jq -r '.[0].timestamp'`
time=`date --date=@$(date -u "+%s" --date="$time") '+%Y-%m-%dT%H:%M:%S'`
sv=`echo "$cpm/60*0.081438" | bc -l | awk '{printf("%.3f \n",$1)}'`
python -c "from log_geiger import send_measurement; send_measurement('yun', '$time', '$cpm', '$sv')"
echo $time': Sending CountPerMinute='$cpm', GammaRadiation='$sv'µSv/h ...'
sleep 130
done
braucht noch log_geiger.py (angepasst von hier ):
import json
import os
import paho.mqtt.client as mqtt
def send_measurement(yun, Timestamp, CountPerMinute, GammaRadiation):
# The MQTT host
mqtt_host = 'swarm.hiveeyes.org'
mqtt_port = 1883
mqtt_user = 'xxxxxxx'
mqtt_pass = 'xxxxxxx'
# The MQTT topic
# See also: https://hiveeyes.org/docs/system/vendor/hiveeyes-one/topology.html#rationale
mqtt_topic = u'{realm}/{network}/{gateway}/{node}/message-json'.format(
realm = 'hiveeyes', # Kollektiv
network = '27041c2a-8afd-4a1e-b3ae-44233fa1f06b', # Imker-ID
gateway = 'mois', # Standort
node = 'yun' # Beute
)
# Define measurement
measurement = {
'Timestamp': Timestamp,
'CountPerMinute': CountPerMinute,
'GammaRadiation': GammaRadiation,
}
# Serialize data as JSON
payload = json.dumps(measurement)
# Publish to MQTT
pid = os.getpid()
client_id = '{}:{}'.format('hiverize', str(pid))
backend = mqtt.Client(client_id=client_id, clean_session=True)
backend.username_pw_set(mqtt_user, mqtt_pass)
backend.connect(mqtt_host, mqtt_port)
backend.publish(mqtt_topic, payload)
backend.disconnect()
python brauchte bei mir noch:
pip install paho-mqtt
starten tuts als log-geiger.service.
2 Likes