Hallo,
ersteinmal vielen vielen Dank an Horchi der sich hier wirklich mit Herz und Seele um dieses Projekt kümmert.
Ich habe jetzt den P4D bei mir am Laufen, funktioniert soweit alles einwandfrei, einzig mit dem Schreiben der Daten in Systemvariablen der CCU3 hab ich noch so meine Probleme, ich arbeite mit /etc/p4d/after-update.sh
#!/usr/bin/env bash
source ~/.bashrc
# -----------------------
# example for Home-Matic
# -----------------------
# ---------------------
# User settings
LOG="/tmp/hm-push.log"
HM_IP="192.168.145.12"
HM_PORT="8181"
DB_HOST="localhost"
HM_URL_BASE="http://$HM_IP:$HM_PORT/Text.exe?Antwort=dom.GetObject(%22"
# list of parameters like "address#type address#type ..."
SENSORS="00#VA 01#VA 00#DI 04#VA 76#VA 78#VA"
# ---------------------
# script
MYSQL="mysql --batch --silent --host=$DB_HOST -u p4 -pp4 -Dp4 --default-character-set=utf8"
MAXTIME=`$MYSQL -e "select max(time) from samples;"`
LASTTIME=`$MYSQL -e "select max(time) from samples where time < '$MAXTIME';"`
if [ -n $LOG ] && [ "$1" != "debug" ]; then
echo "----------------------------------------" >> $LOG
echo `date` >> $LOG
echo "updating homematic at ip $HM_IP" >> $LOG
echo "actual measure at: $MAXTIME" >> $LOG
echo "last measure at: $LASTTIME" >> $LOG
echo "----------------------------------------" >> $LOG
fi
for s in $SENSORS; do
TYPE=`echo $s | sed s/".*#"/""/g`
ADDR=`echo $s | sed s/"#.*"/""/g`
LASTPARAMS=`$MYSQL -e "select concat(replace(case when f.usrtitle is null or f.usrtitle = '' then f.title else f.usrtitle end, ' ', '%20'), \
'%22).State(', \
case when s.text is null then s.value else concat('%22',replace(s.text, ' ', '%20'), '%22') end, \
')') \
from samples s, valuefacts f \
where f.address = s.address and f.type = s.type \
and time = '$LASTTIME' and s.address = '$ADDR' and s.type = '$TYPE';"`
PARAMS=`$MYSQL -e "select concat(replace(case when f.usrtitle is null or f.usrtitle = '' then f.title else f.usrtitle end, ' ', '%20'),
'%22).State(',
case when s.text is null then s.value else concat('%22',replace(s.text, ' ', '%20'), '%22') end,
')') \
from samples s, valuefacts f \
where f.address = s.address and f.type = s.type \
and time = '$MAXTIME' and s.address = '$ADDR' and s.type = '$TYPE';"`
if [ -n $LOG ] && [ "$1" != "debug" ]; then
echo "last data was: $LASTPARAMS" >> $LOG
echo "actual data is: $PARAMS" >> $LOG
fi
if [ "$PARAMS" == "$LASTPARAMS" ]; then
if [ "$1" == "debug" ]; then
echo "skipping "$PARAMS", not changed"
elif [ -n $LOG ]; then
echo "skipping "$PARAMS", not changed" >> $LOG
fi
continue;
fi
if [ "$1" == "debug" ]; then
echo curl "$HM_URL_BASE$PARAMS;"
else
if [ -n $LOG ]; then
echo "calling curl $HM_URL_BASE$PARAMS;" >> $LOG
fi
curl "$HM_URL_BASE$PARAMS;" > /dev/null 2>&1
fi
done
Alles anzeigen
Allerdings werden die Adressen 76#VA und die 78#VA (Puffer obe / Puffer unten) nicht an die CCU3 geschickt, an der Benennung der Systemvariablen in der CCU3 liegt es nicht, wenn ich mir den "/tmp/hm-push.log" ansehe fehlen da bei 2 Adressen die Bezeichnungen.
----------------------------------------
Sa 9. Jan 13:00:56 CET 2021
updating homematic at ip 192.168.145.12
actual measure at: 2021-01-09 13:00:52
last measure at: 2021-01-09 12:58:43
----------------------------------------
last data was: Kessel%22).State(81.00)
actual data is: Kessel%22).State(81.00)
skipping Kessel%22).State(81.00), not changed
last data was: Abgas%22).State(218.00)
actual data is: Abgas%22).State(222.00)
calling curl http://192.168.145.12:8181/Text.exe?Antwort=dom.GetObject(%22Abgas%22).State(222.00);
last data was: Tuer%22).State(0.00)
actual data is: Tuer%22).State(0.00)
skipping Tuer%22).State(0.00), not changed
last data was: Aussen%22).State(2.00)
actual data is: Aussen%22).State(2.00)
skipping Aussen%22).State(2.00), not changed
last data was:
actual data is:
skipping , not changed
last data was:
actual data is:
skipping , not changed
----------------------------------------
Sa 9. Jan 13:01:55 CET 2021
updating homematic at ip 192.168.145.12
actual measure at: 2021-01-09 13:01:52
last measure at: 2021-01-09 13:00:52
----------------------------------------
last data was: Kessel%22).State(81.00)
actual data is: Kessel%22).State(81.00)
skipping Kessel%22).State(81.00), not changed
last data was: Abgas%22).State(222.00)
actual data is: Abgas%22).State(223.00)
calling curl http://192.168.145.12:8181/Text.exe?Antwort=dom.GetObject(%22Abgas%22).State(223.00);
last data was: Tuer%22).State(0.00)
actual data is: Tuer%22).State(0.00)
skipping Tuer%22).State(0.00), not changed
last data was: Aussen%22).State(2.00)
actual data is: Aussen%22).State(2.00)
skipping Aussen%22).State(2.00), not changed
last data was:
actual data is:
skipping , not changed
last data was:
actual data is:
skipping , not changed
----------------------------------------
Sa 9. Jan 13:02:55 CET 2021
updating homematic at ip 192.168.145.12
actual measure at: 2021-01-09 13:02:52
last measure at: 2021-01-09 13:01:52
----------------------------------------
last data was: Kessel%22).State(81.00)
actual data is: Kessel%22).State(81.50)
calling curl http://192.168.145.12:8181/Text.exe?Antwort=dom.GetObject(%22Kessel%22).State(81.50);
last data was: Abgas%22).State(223.00)
actual data is: Abgas%22).State(225.00)
calling curl http://192.168.145.12:8181/Text.exe?Antwort=dom.GetObject(%22Abgas%22).State(225.00);
last data was: Tuer%22).State(0.00)
actual data is: Tuer%22).State(0.00)
skipping Tuer%22).State(0.00), not changed
last data was: Aussen%22).State(2.00)
actual data is: Aussen%22).State(2.00)
skipping Aussen%22).State(2.00), not changed
last data was:
actual data is:
skipping , not changed
last data was:
actual data is:
skipping , not changed
----------------------------------------
Sa 9. Jan 13:03:55 CET 2021
updating homematic at ip 192.168.145.12
actual measure at: 2021-01-09 13:03:52
last measure at: 2021-01-09 13:02:52
----------------------------------------
last data was: Kessel%22).State(81.50)
actual data is: Kessel%22).State(81.50)
skipping Kessel%22).State(81.50), not changed
last data was: Abgas%22).State(225.00)
actual data is: Abgas%22).State(225.00)
skipping Abgas%22).State(225.00), not changed
last data was: Tuer%22).State(0.00)
actual data is: Tuer%22).State(0.00)
skipping Tuer%22).State(0.00), not changed
last data was: Aussen%22).State(2.00)
actual data is: Aussen%22).State(2.00)
skipping Aussen%22).State(2.00), not changed
last data was:
actual data is:
skipping , not changed
last data was:
actual data is:
skipping , not changed
Alles anzeigen
Ich hab den P4D auch schon auf 0.6.8 aktualisiert.
Woran kann das liegen?
Gruß
Christian