Falls gewünscht, kann ich euch gerne ein Script zur Verfügung stellen, um die Temperatur vom LMA per MQTT zum iobroker zu schicken. Habe ich bereits selbst seit Monaten im Einatz.
Ich habe meinen LMA mittlerweile von allen Steuerungsaufgaben befreit und er dient mir nur noch als "dummes" Gateway für sämtliche Funk Dinge. Alle neuen Dinge die angeschafft werden, haben nur noch WLAN und der Status kann abgefragt werden.
Die Funkrauchmelder lasse ich über den LMA einen API Request an den Iobroker direkt senden, damit die Raucherkennung auch über den Iobroker funktioniert. Hier kann ich euch auch gerne die Infos zukommen lassen, wie ich das gemacht habe.
Adapter für ioBroker
- BooosesThaSnipper
- Beiträge: 323
- Registriert: Mi 24. Feb 2016, 15:10
Wenn ihr eh iobroker am Start habt, habt ihr vermutlich einen Raspberry oder ein andere Linux System am laufen. Daher einfach in eurem Home Ordner einen neuen Ordner mit dem Namen "bin" erstellen und darin das eigentliche Script mit dem Namen "lma_tempstats2mqtt.sh" erstellen und dem Inhalt von unten füllen.
Danach muss das ganze noch Ausführbar gemacht werden:
Danach einen Cron Job erstellen der wie folgt aussieht:
Das eigentliche Script, nimmt alle channels aus der weather.json und schickt sie per mqtt an den mqtt Broker, den habt ihr eh vermutlich bereits im IoBroker für andere Dinge aktiv, dann könnt ihr dort eure Temperaturstatistiken für Blockly Scripte etc nutzen.
IP-Adressen und User und Passwort müsst ihr natürlich anpassen.
Viel Spaß
Danach muss das ganze noch Ausführbar gemacht werden:
Code: Alles auswählen
chmod +x /home/pi/bin/lma_tempstats2mqtt.sh
Code: Alles auswählen
* * * * * /home/pi/bin/lma_tempstats2mqtt.sh
IP-Adressen und User und Passwort müsst ihr natürlich anpassen.
Viel Spaß
Code: Alles auswählen
#!/bin/bash
# ########################################################################### #
# =========================================================================== #
# Filename: lma_tempstats2mqtt.sh
# Author: BooosesThaSnipper
# Version: 1.0
# Date: 2019-04-23
# Project: SmartHome
# =========================================================================== #
# Description:
# A script to pull weather data from LightManager and publish it via mqtt
# =========================================================================== #
# ########################################################################### #
# ########################################################################### #
# =========================================================================== #
# START - Declaration of Variables
# Enter your LightManager Air IP
LMA_IP='192.168.x.x'
# Weather Temp File
LMA_TEMP='/tmp/weather.json'
# MQTT Broker Server
MQTT_SERVER="192.168.x.x"
MQTT_PORT="1883"
MQTT_USER="MQTTUSER"
MQTT_PASSWORD="MQTTPASSWORD"
# END - Declaration of Variables
# DO NOT CHANGE ANYTHING ABOVE THIS LINE
# =========================================================================== #
# ########################################################################### #
# ########################################################################### #
# =========================================================================== #
# Check if all needed binaries are installed
BINS="jq curl mosquitto-clients"
for BIN in ${BINS}; do
STATUS_BIN=$( dpkg -s ${BIN} &> /dev/null; echo $? )
if [ $STATUS_BIN -ne 0 ]; then
echo "${BIN} is not installed"
echo "Command for installing ${BIN}: \"sudo apt-get install ${BIN}\" "
exit 1
fi
done
# Save weather.json local for fast processing
curl --silent http://${LMA_IP}/weather.json > ${LMA_TEMP}
# Get information from weather.json and push it into InfluxDB
for i in $( for j in `seq 0 11`; do echo "channel${j}"; done ); do
# Get Temperature
TEMPERATURE=$( jq -r ".${i}.temperature" ${LMA_TEMP} )
# Get Humidity and check value
HUMIDITY=$( jq -r ".${i}.humidity" ${LMA_TEMP} )
# Send value to mqtt broker
/usr/bin/mosquitto_pub -h ${MQTT_SERVER} -p ${MQTT_PORT} -u ${MQTT_USER} -P "${MQTT_PASSWORD}" -t "lightmanger/weather/$i/temperature" -m "${TEMPERATURE}"
/usr/bin/mosquitto_pub -h ${MQTT_SERVER} -p ${MQTT_PORT} -u ${MQTT_USER} -P "${MQTT_PASSWORD}" -t "lightmanger/weather/$i/humidity" -m "${HUMIDITY}"
done
rm -f $LMA_TEMP
# =========================================================================== #
# ########################################################################### #
exit
- BooosesThaSnipper
- Beiträge: 323
- Registriert: Mi 24. Feb 2016, 15:10
Du kannst die natürlich auch übermittelt. In dem Fall halt nur true und false.
Hab ich auch schon gebastelt. Nachteil ist, diese werden nur minütlich übermittelt. Daher hab ich für die Rauchmelder den API Aufruf von iobroker in meine entsprechenden Szenen gebaut.
Kann ich euch auch gerne zeigen wie ich das gebaut habe.
Hab ich auch schon gebastelt. Nachteil ist, diese werden nur minütlich übermittelt. Daher hab ich für die Rauchmelder den API Aufruf von iobroker in meine entsprechenden Szenen gebaut.
Kann ich euch auch gerne zeigen wie ich das gebaut habe.
- BooosesThaSnipper
- Beiträge: 323
- Registriert: Mi 24. Feb 2016, 15:10
Hier die Anleitung wenn ihr minütlich die Marker Stats vom LMA per MQTT übertragen wollt
Wenn ihr eh iobroker am Start habt, habt ihr vermutlich einen Raspberry oder ein andere Linux System am laufen. Daher einfach in eurem Home Ordner einen neuen Ordner mit dem Namen "bin" erstellen und darin das eigentliche Script mit dem Namen "lma_marker2mqtt.sh" erstellen und dem Inhalt von unten füllen.
Danach muss das ganze noch Ausführbar gemacht werden:
Danach einen Cron Job erstellen der wie folgt aussieht:
Das eigentliche Script, nimmt alle Marker aus der params.json und schickt sie per mqtt an den mqtt Broker, den habt ihr eh vermutlich bereits im IoBroker für andere Dinge aktiv, dann könnt ihr dort eure Marker für Blockly Scripte etc nutzen.
IP-Adressen und User und Passwort müsst ihr natürlich anpassen.
lasst am Anfang das Script einmal per Hand laufen, es überprüft ob alles notwendige installiert ist und falls nicht zeigt es euch, wie ihr das tun könnt. und das geht wie folgt:
Viel Spaß
Wenn ihr eh iobroker am Start habt, habt ihr vermutlich einen Raspberry oder ein andere Linux System am laufen. Daher einfach in eurem Home Ordner einen neuen Ordner mit dem Namen "bin" erstellen und darin das eigentliche Script mit dem Namen "lma_marker2mqtt.sh" erstellen und dem Inhalt von unten füllen.
Danach muss das ganze noch Ausführbar gemacht werden:
Code: Alles auswählen
chmod +x /home/pi/bin/lma_marker2mqtt.sh
Code: Alles auswählen
* * * * * /home/pi/bin/lma_marker2mqtt.sh
IP-Adressen und User und Passwort müsst ihr natürlich anpassen.
lasst am Anfang das Script einmal per Hand laufen, es überprüft ob alles notwendige installiert ist und falls nicht zeigt es euch, wie ihr das tun könnt. und das geht wie folgt:
Code: Alles auswählen
/home/pi/bin/lma_marker2mqtt.sh
Code: Alles auswählen
#!/bin/bash
# ########################################################################### #
# =========================================================================== #
# Filename: lma_marker2mqtt.sh
# Author: BooosesThaSnipper
# Version: 1.0.0
# Date: 2020-01-26
# Project: SmartHome
# =========================================================================== #
# Description:
# A Script to pull marker status from LMA und publish it via mqtt
# =========================================================================== #
# ########################################################################### #
# ########################################################################### #
# =========================================================================== #
# START - Declaration of Variables
# Enter your LightManager Air IP
LMA_IP='192.168.x.x'
# MQTT Broker Server
MQTT_SERVER="192.168.x.x"
MQTT_PORT="1883"
MQTT_USER="MQTTUSER"
MQTT_PASSWORD="MQTTPASSWORD"
# END - Declaration of Variables
# DO NOT CHANGE ANYTHING ABOVE THIS LINE
# =========================================================================== #
# ########################################################################### #
# ########################################################################### #
# =========================================================================== #
# Check needed Packages
# List of required packages
PACKAGES='curl jq bc mosquitto-clients'
for PACKAGE in ${PACKAGES}; do
# Check if package is installed
STATUS_PACKAGE=$( dpkg -s ${PACKAGE} 2> /dev/null | grep -q "Status: install ok installed"; echo $? )
if [ ${STATUS_PACKAGE} -ne 0 ]; then
echo "${PACKAGE} is not installed"
echo "Command for installing ${PACKAGE}: \"sudo apt-get install ${PACKAGE}\" "
exit 1
fi
done
# Define binary Path
BIN_CURL=$( which curl )
BIN_JQ=$( which jq )
BIN_WC=$( which wc )
BIN_BC=$( which bc )
BIN_MOSQUITTO=$( which mosquitto_pub )
# =========================================================================== #
# ########################################################################### #
# ########################################################################### #
# =========================================================================== #
# Check Marker Status
# Get actual Marker Status from LMA
PARAMS_TEMP=$( tempfile )
${BIN_CURL} -s http://${LMA_IP}/params.json > ${PARAMS_TEMP}
MARKER_COUNT=$( echo $( ${BIN_JQ} -r '.["marker state"]' ${PARAMS_TEMP} | ${BIN_WC} -m ) -1 | ${BIN_BC} )
for MARKER in `seq 1 ${MARKER_COUNT}`; do
MARKER_STATUS=$( printf "%${MARKER_COUNT}.${MARKER}s\n" $( ${BIN_JQ} -r '.["marker state"]' ${PARAMS_TEMP} ) | awk '{print substr($0,length,1)}' )
# Check Marker Status
if [ ${MARKER_STATUS} -eq 0 ]; then
STATUS=false
elif [ ${MARKER_STATUS} -eq 1 ]; then
STATUS=true
fi
# Send value to mqtt broker
${BIN_MOSQUITTO} -h ${MQTT_SERVER} -p ${MQTT_PORT} -u ${MQTT_USER} -P "${MQTT_PASSWORD}" -t "lightmanger/marker/${MARKER}/status" -m ${STATUS}
done
exit
# Delete LMA params file
rm -f ${PARAMS_TEMP}
# =========================================================================== #
# ########################################################################### #
exit
- BooosesThaSnipper
- Beiträge: 323
- Registriert: Mi 24. Feb 2016, 15:10
Wer Marker innerhalb einer Funkszene in "Echtzeit" übertragen möchte muss wie folgt vorgehen:
- innrhalb vom ioBroker den Adapter "simple-api" installieren
- in den Einstellungen wie folgt vorgehen:
-- Erweitern Sie den WEB-Adapter: "keins"
--- IP: "0.0.0.0 - Alle IPs zulassen"
-- Port: 8088
-- Verschlüsselung (HTTPS): "Deaktiviert" (Leider hat der LMA Probleme wie üblich Probleme mit SSL daher gehts leider nicht anders)
-- Authentifikation "Aktiviert"
-- Nur erlauben wenn Anwender auch Besitzer ist: "deaktiviert"
-- Datenquelle auswählen: "Keins"
-- Alle Datenpunkte auflisten: "aktiviert"
Danach den Adapter starten und schauen ob die Lampe entsprechend grün ist. Aus Sicherheitsgründen arbeite ich immer mit der Authentifikation vom iobroker, Login ohne User und Passwort halte ich für grob fahrlässig. Wer es dennoch ohne betreibt sollte dies auf eigene Verantwortung tun. Klar ohne SSL Ist es ein wenig doof, aber besser als gar keine Sicherheit.
Nun wechselt ihr ins Air Studio und legt euch neue LAN Aktoren an: Methode "GET", vier Werte müsste ihr noch anpassen:
IP-Adresse vom ioBroker
$MARKER = den Marker angeben, also zum beispiel Nummer 5
$USER = iobroker Username
$PASSWORD = Iobroker Password
Taste 1: "TRUE"
Taste 2: "FALSE"
Damit könnt ihr mit einem Aktor die entsprechenden Infos direkt übertragen. Da ich der Zuverlässigkeit nicht immer gnaz traue, lasse ich parallel dazu, das Marker Script laufen, welches minütlich die Marker überträgt. Ich habe bei mir keine Szenen die kurze intervalle haben, daher passt das für mich so.
Falls nicht, solltet ihr auf alle Fälle das Script 1x laufen lassen, damit sämtliche Einträge angelegt werden. Sollte ihr anstelle des MQTT-Clients den MQTT Broker/Client nutzen, müsst ihr oben beim LAN Aktor den Pfad anpassen, also mqtt-client.0 zu mqtt.0. oder falls ihr mehrere Instanzen laufen habt, die Instanzzahl von 0 hochzählen. Sollte bei der Nutzung von iobroker aber bekannt sein.
Grüße
Markus
- innrhalb vom ioBroker den Adapter "simple-api" installieren
- in den Einstellungen wie folgt vorgehen:
-- Erweitern Sie den WEB-Adapter: "keins"
--- IP: "0.0.0.0 - Alle IPs zulassen"
-- Port: 8088
-- Verschlüsselung (HTTPS): "Deaktiviert" (Leider hat der LMA Probleme wie üblich Probleme mit SSL daher gehts leider nicht anders)
-- Authentifikation "Aktiviert"
-- Nur erlauben wenn Anwender auch Besitzer ist: "deaktiviert"
-- Datenquelle auswählen: "Keins"
-- Alle Datenpunkte auflisten: "aktiviert"
Danach den Adapter starten und schauen ob die Lampe entsprechend grün ist. Aus Sicherheitsgründen arbeite ich immer mit der Authentifikation vom iobroker, Login ohne User und Passwort halte ich für grob fahrlässig. Wer es dennoch ohne betreibt sollte dies auf eigene Verantwortung tun. Klar ohne SSL Ist es ein wenig doof, aber besser als gar keine Sicherheit.
Nun wechselt ihr ins Air Studio und legt euch neue LAN Aktoren an: Methode "GET", vier Werte müsste ihr noch anpassen:
IP-Adresse vom ioBroker
$MARKER = den Marker angeben, also zum beispiel Nummer 5
$USER = iobroker Username
$PASSWORD = Iobroker Password
Taste 1: "TRUE"
Code: Alles auswählen
192.168.x.x:8088/set/mqtt-client.0.lightmanger.marker.$MARKER.status?value=true&user=$USER&pass=$PASSWORD
Code: Alles auswählen
192.168.x.x:8088/set/mqtt-client.0.lightmanger.marker.$MARKER.status?value=false$user=$USER&pass=$PASSWORD
Damit könnt ihr mit einem Aktor die entsprechenden Infos direkt übertragen. Da ich der Zuverlässigkeit nicht immer gnaz traue, lasse ich parallel dazu, das Marker Script laufen, welches minütlich die Marker überträgt. Ich habe bei mir keine Szenen die kurze intervalle haben, daher passt das für mich so.
Falls nicht, solltet ihr auf alle Fälle das Script 1x laufen lassen, damit sämtliche Einträge angelegt werden. Sollte ihr anstelle des MQTT-Clients den MQTT Broker/Client nutzen, müsst ihr oben beim LAN Aktor den Pfad anpassen, also mqtt-client.0 zu mqtt.0. oder falls ihr mehrere Instanzen laufen habt, die Instanzzahl von 0 hochzählen. Sollte bei der Nutzung von iobroker aber bekannt sein.
Grüße
Markus
- BooosesThaSnipper
- Beiträge: 323
- Registriert: Mi 24. Feb 2016, 15:10
Unterstützt Homebridge nicht auch eine Anbindung per MQTT?
MQTT ist ja nur ein zentrales Message Protokoll, dass von diversen Tools genutzt wird. Iobroker ist nur eins davon. Node Red glaube ich auch.
Versuch erstmal den Weg.
MQTT ist ja nur ein zentrales Message Protokoll, dass von diversen Tools genutzt wird. Iobroker ist nur eins davon. Node Red glaube ich auch.
Versuch erstmal den Weg.