schaut nochmal ob der Update richtig geklappt hat, ggf ein apt remove p4d vorher!
Habe ich gemacht.
Danach wieder installiert.
Jetzt habe ich auch endlich die Version 0.6.8-GITc6c38e5.
Es gibt 4.961 Antworten in diesem Thema, welches 1.509.054 mal aufgerufen wurde. Der letzte Beitrag () ist von ranseyer.
schaut nochmal ob der Update richtig geklappt hat, ggf ein apt remove p4d vorher!
Habe ich gemacht.
Danach wieder installiert.
Jetzt habe ich auch endlich die Version 0.6.8-GITc6c38e5.
werde das noch in das install Skript einbauen ist besser bzw. führt zu weniger Problemen
stimmt ich hatte nicht auf dem Schirm das due direkt das git verwendest und mich nur auch deb debian package konzentriert, jetzt ist es im git!
Sorry!
Danke, jetzt funktioniert die Änderung des Kessel-Solls, keine Fehlermeldung mehr.
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
logge doch mal das statement dann kannst du es dir ansehen und auch testen ob es einen Wert liefert
logge doch mal das statement dann kannst du es dir ansehen und auch testen ob es einen Wert liefert
Also ich verstehe was du meinst, weis nur nicht wie ich das machen soll, so tief drin bin ich dann im Thema doch nicht
ich habs mal gemacht
für sensor 04 bekomme ich einen Wert:
MariaDB [p4]> 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 = '2021-01-09 13:49:06' and s.address = '04' and s
.type = 'VA';
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 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,')') |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Außentemperatur%22).State(2.00) |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
für 76 nicht:
MariaDB [p4]> 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 = '2021-01-09 13:48:06' and s.address = '76' and
s.type = 'VA';
[b]Empty set (0.01 sec)[/b]
was hier daran liegt das ich den nicht aufzeichne. Zeichnest du denn alle auf die du mit dem Skript abfragen möchtest?
Liefert select * from samples where address = 78 and type = 'VA'; bei dir was?
Hallo,
hat sich erledigt, hab meinen Fehler gefunden, in der Überischt "Aufzeichnung" steht VA:0x76, ich dachte ich muss dann in die after-update.sh 76#VA eintragen, das scheint aber Falsch.
Bei der Ansicht Funktionsschema kommt bei Mouseover VA:118 bei Pufferoben, trage ich 118#VA in die after-update.sh funktioniert die Übermittlung.
//EDIT: Bei select * from samples where address = 78 and type = 'VA' kommt bei mir
-bash: Syntaxfehler beim unerwarteten Wort `from'
Auch wenn ich 78 durch 118 ersetze kommt der selbe Fehler.
Gruß
Christian
der bash Fehler liegt daran das select ein SQL Statement ist, die bash kennt nur bash Syntax die kann kein SQL ;).
Under Trick bei der Adresse ist das die ein 118 Dezimal und 76 ein Hexadezimal Wert ist, Hex Werte werden meist durch ein vorangestelltes 0x ab und zu auch furch ein h gekennzeichnet.
Also 118 = 76h = 0x76
MySQL versteht auch das mit dem 0x:
MariaDB [p4]> select * from samples where address = 0x76 limit 1;
+---------+------+-----------+---------------------+------------+------------+-------+------+---------+
| address | type | aggregate | time | inssp | updsp | value | text | samples |
+---------+------+-----------+---------------------+------------+------------+-------+------+---------+
| 118 | VA | A | 2013-06-14 13:45:00 | 1417446113 | 1417446113 | 59.00 | NULL | 1 |
+---------+------+-----------+---------------------+------------+------------+-------+------+---------+
[b]1 row in set (0.01 sec)[/b]
MariaDB [p4]> select * from samples where address = 118 limit 1;
+---------+------+-----------+---------------------+------------+------------+-------+------+---------+
| address | type | aggregate | time | inssp | updsp | value | text | samples |
+---------+------+-----------+---------------------+------------+------------+-------+------+---------+
| 118 | VA | A | 2013-06-14 13:45:00 | 1417446113 | 1417446113 | 59.00 | NULL | 1 |
+---------+------+-----------+---------------------+------------+------------+-------+------+---------+
[b]1 row in set (0.00 sec)[/b]
Alles anzeigen
Zu Hex, Dezimal und auch SQL gibt es ganz viel Dokumentation im Internet.
Grüße Jörg
Hallo,
ich habe grad im WebEBIF die Zeitsynchronisation gesehen und die mal aktiviert.
Blau ist doch aktiviert? Gelb deaktiviert? Oder anders herum?
Was macht die Zeitsynchronisation?
Ich vermute, die stellt die Zeit im Kessel auf die Zeit des RPi, richtig?
Aber ist 3:00 Uhr so klug? Genau da wird auch MEZ/MESZ umgestellt.
Wäre vor 2:00 oder nach 3:00 Uhr nicht besser?
Vorhin habe ich gemerkt, dass das WebIF nichts mehr anzeigt bzw. extrem laaaangsam reagiert.
p4 state lieferte einen Fehler.
Zuerst Neustart RPi.
Dann habe ich den USB-Seriell-Adapter vom Kessel und vom RPi abgezogen und beide Enden neu verbunden.
Danach wurden wieder Daten empfangen.
So, jetzt zur Frage.
Warum habe ich keine Fehler-Mail vom p4d erhalten?
Test-Mails kommen an.
Schalter nach rechts ist aktiviert, wie in Deinem Bild zu sehen. Der Hinweis mit der Zeitumstellung ist nicht von der Hand zu weisen, es sei denn unsere Politiker machen endlich mal, wofür wir sie bezahlen und beerdigen diesen Mist für immer...
Welche Fehlermeldung kam denn bei "p4 state"?
Hat der p4d Fehlermeldungen ins Log geschrieben? Falls nicht, verschickt er sicher auch keine Emails, weil er ja keinen Fehler erkennt.
Fehler Mails erzeugt der P4d nur wenn die Heizung eine Störungen meldet.
Welche Fehlermeldung kam denn bei "p4 state"?
Das weiß ich leider nicht mehr genau.
Ich glaube aber so oder so ähnlich wie hier.
Das ist aus /var/log/syslog.1:
Probleme mit dem USB-Seriell-Adapter hatte ich schon zweimal vor einigen Monaten.
Deshalb war das mein erster Verdacht, als keine Daten mehr kamen.
Zitat von meuteProbleme mit dem USB-Seriell-Adapter hatte ich schon zweimal vor einigen Monaten.Deshalb war das mein erster Verdacht, als keine Daten mehr kamen.
Wenn nur die Kommunikation zwischen Betriebssystem und Adapter hängengeblieben war, hätte ein Reboot eigentlich reichen müssen. Eventuell gibt es Kontaktprobleme am USB Port? Oder nutzt Du DB9 auf RJ45 Stecker und ein Patchkabel dazwischen? Wenn es Kontaktprobleme gibt, könnten Vibrationen des Kessels den Fehler sporadisch auftreten lassen.
Wenn nur die Kommunikation zwischen Betriebssystem und Adapter hängengeblieben war, hätte ein Reboot eigentlich reichen müssen. Eventuell gibt es Kontaktprobleme am USB Port? Oder nutzt Du DB9 auf RJ45 Stecker und ein Patchkabel dazwischen? Wenn es Kontaktprobleme gibt, könnten Vibrationen des Kessels den Fehler sporadisch auftreten lassen.
Bei mir ist es so verkabelt:
Kessel <> Seriell-Verlängerung DE-9 (D-SUB 9pol.) 2,0m <> Prolific PL2303 USB-to-Seriell-Adapter <> USB-Verlängerung 1,5m <> RPi
Ich musste auch schon damals vom USB-to-Seriell-Adapter den DE-9-Stecker trennen, damit es wieder lief.
Nur USB trennen hat nicht geholfen.
Prolific PL2303
Vielleicht magst einen mit FTDI-Chip ausprobieren?
Mir sind heute noch zwei kleinere Fehler aufgefallen.
Der Vergleich scheint als Integer zu erfolgen und da wäre 0 == 0 tatsächlich richtig. Es ist aber eine Kommazahl.
@pellet-heizer
zu Punkt 1, ich habe diesen Parameter nicht daher kann ich das nicht reproduzieren.
Was liefert denn ./p4 getp -a 1205 bei dir?
Ich habe hier ein Beispiel mit dem Effekt gefunden, da liefert mir die Steuerung Information das der Parameter 2 Nachkommastellen hat aber den Faktor 1:
[code]root@p4d {master u=} ~/build/p4d> ./p4 getp -a 447
Address: 0x01bf
Unit:
Digits: 2
Value: 640.00 (640)
Min: 1.00 (1)
Max: 9999.00 (9999)
Default: 250.00 (250)
Factor: 1[code]
Die Werte in den Klammern kommen von der Steuerung. Das value wird auch genau in der Form von der Steuerung beim Set erwartet.
Daher habe ich bei dem Beispiel keine Idee wie man damit umgehen muss. Ob das auch auf deinen fall zutrifft kann ich erst sagen wenn ich die Ausgabe sehe.
Ich werde es dennoch anpassen und den Werte der dann unverändert ist an die Steuerung senden, dann ist der angezeigte Fehler ein anderer (communication error).
Zu Punkt 2, Das weiß ich, der Time Dialog für einzelne Zeiten ist noch nicht fertig.
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!