brandond / esphome-tuya_pir

ESPHome support for cheap WiFi PIR sensors
65 stars 21 forks source link

MQTT send to domoticz #3

Open pfunkowski opened 5 years ago

pfunkowski commented 5 years ago

Hi, what i need to send device status to domoticz controller?

brandond commented 5 years ago

I don't know, I've never used domoticz. This is a custom component for ESPHome, which works with Home Assistant.

pfunkowski commented 5 years ago

Hi, I got it!

my bash script is

#!/bin/sh

SERVER="192.168.1.1"
PORT="8080"
DHTIDX="15"

STATUS=$(sudo mosquitto_sub -h $SERVER -C 1 -p 1883 -t pir/binary_sensor/pir_motion/state) 
BATTERY=$(sudo mosquitto_sub -h $SERVER -C 1 -p 1883 -t pir/sensor/pir_battery/state)
RSSI=$(sudo mosquitto_sub -h $SERVER -C 1 -p 1883 -t pir/sensor/pir_wifi_signal/state) 

echo "PIR status is $STATUS"
echo "PIR battery voltage is $BATTERY"
echo "PIR wifi signal is $RSSI"

if [ $STATUS = "ON" ]; then
curl -s -i -H "Accept: application/json" "http://$SERVER:$PORT/json.htm?type=command&c=getauth&param=switchlight&idx=$DHTIDX&switchcmd=On"
else
curl -s -i -H "Accept: application/json" "http://$SERVER:$PORT/json.htm?type=command&c=getauth&param=switchlight&idx=$DHTIDX&switchcmd=Off"
fi

and crontab command

* * * * * for i in {1..12}; do /home/pi/motion.sh ; sleep 5; done

pfunkowski commented 4 years ago

or bash script like background service

#!/bin/bash

SERVER="192.168.1.1"
PORT="8080"
DHTIDX="15"

PREVSTATUS="null"
CNT=300

while true
do
    STATUS=$(sudo mosquitto_sub -h $SERVER -C 1 -p 1883 -t pir/binary_sensor/pir_motion/state) 
    BATTERY=$(sudo mosquitto_sub -h $SERVER -C 1 -p 1883 -t pir/sensor/pir_battery/state)
    BATTERY=$(echo "sclae=0; $BATTERY * 100 / 3" | bc)
    RSSI=$(sudo mosquitto_sub -h $SERVER -C 1 -p 1883 -t pir/sensor/pir_wifi_signal/state)
    RSSI=$(echo "scale=0; $RSSI * -1" | bc)
    if [[ "$PREVSTATUS" != "$STATUS" || CNT -le 0 ]]; then
        CNT=300
        PREVSTATUS=$STATUS
        echo "PIR status is $STATUS"
        echo "PIR battery level is $BATTERY"
        echo "PIR wifi signal is $RSSI"
        echo "PIR previous status is $PREVSTATUS"
        if [ "$STATUS" == "ON" ]; then
            echo "+++++++++++++++++ON"
            curl -s -i -H "Accept: application/json" "http://$SERVER:$PORT/json.htm?type=command&c=getauth&param=switchlight&idx=$DHTIDX&switchcmd=On&rssi=$RSSI&battery=$BATTERY"
        else
            echo "-----------------OFF"
            curl -s -i -H "Accept: application/json" "http://$SERVER:$PORT/json.htm?type=command&c=getauth&param=switchlight&idx=$DHTIDX&switchcmd=Off&rssi=$RSSI&battery=$BATTERY"
        fi
    fi
    let CNT--
    sleep 1
done