abbrechen
Suchergebnisse werden angezeigt für 
Anzeigen  nur  | Stattdessen suchen nach 
Meintest du: 

Output von getRawJsonData("")

Hallo zusammen,

seit Anfang August 2021 sind wir stolze Besitzer eine Viessmann Vitodens 200-W. Wie bei meiner alten Anlage (Paradigma mit Systa-Interface), möchte ich alle 10 min einen Eintrag in eine MySQL-Db vornehmen. Dazu habe ich mir die ViessmannAPI heruntergeladen und die Beispiele ausgeführt (wenn man ReCaptcha ausschaltet, funktionieren auch die meisten). Damit die Aufruflast nicht so hoch ist, habe ich mir den
Output von viessmannApi->getRawJsonData("") angeschaut. Hier bekommt man mit einem Aufruf sämtliche Datenpunkte.
Wie gliedert man aber den JSON-Strom ? Mir ist klar, dass man auch einzelne Datenpunkte aufrufen kann, wie im Nachtrag zu sehen:

DWUX-64:~/src/php/Viessmann/Viessmann-Api-2.0.0/example$ php -f Main.php

Aussentemperatur : 19
Heizkurve/Neigung: 1
Heizkurve/Niveau : 2
Aktiver Modus : dhwAndHeating
Aktives Programm : normal
Brenner aktiv ? : 1
Warmwasser akt.? : 0
Raumtemp/Programm: 20
Red. Tempertaur : 16
Anlage im StandBy: 0
Warmwassertemp. : 49.6

2 ANTWORTEN 2

Aus der Gemeinde kommt sehr wenig Input, deshalb hier meine Erkenntnisse bis hier:

#!/bin/bash
#
# bash-script GetViessmanInfo
# (c) D. Walter, Nutzung der Viessmann-API (soweit möglich)
# 2021-10-08: Einlesen der Viessmann-Daten über den Aufruf
# $viessmannApi->getRawJsonData("")
# Ausgabe in eine Log-Datei. Analyse der zurückgegebenen Werte
#2021-10-18: Nach Strukturänderungen bei den Rückgabewert->angepasst
# dafür gibt es jetzt einen neuen Wert: Modulation

pushd $HOME/src/php/Viessmann/Viessmann-Api-2.0.0/example > /dev/null
php DWTest4.php >$HOME/data/Viessmann/log/ViessmannAPI.log
popd > /dev/null

# Werte aus log-Datei einlesen und in Variablen speichern
GemVorlTemp=$(cat $HOME/data/Viessmann/log/ViessmannAPI.log | jq -r '.[17]' | cut -c150- | sed 's/,/ /g' | awk '{print $1}')
WWStatus=$(cat $HOME/data/Viessmann/log/ViessmannAPI.log | jq -r '.[33]' | cut -c115- | sed 's/}/ /g' | awk '{print $1}')
WWTemp=$(cat $HOME/data/Viessmann/log/ViessmannAPI.log | jq -r '.[40]' | cut -c152- | sed 's/,/ /g' | awk '{print $1}')
AussenTemp=$(cat $HOME/data/Viessmann/log/ViessmannAPI.log | jq -r '.[13]' | cut -c140- | sed 's/,/ /g' | awk '{print $1}')
HK1_VorlTemp=$(cat $HOME/data/Viessmann/log/ViessmannAPI.log | jq -r '.[17]' | cut -c150- | sed 's/,/ /g' | awk '{print $1}')
HK1_PumpeStat=$(cat $HOME/data/Viessmann/log/ViessmannAPI.log | jq -r '.[20]' | cut -c98- | sed 's/}/ /g' | awk '{print $1}')
Brennerstarts=$(cat $HOME/data/Viessmann/log/ViessmannAPI.log | jq -r '.[28]' | cut -c139- | sed 's/,/ /g' | awk '{print $1}')
Brennerstd=$(cat $HOME/data/Viessmann/log/ViessmannAPI.log | jq -r '.[28]' | cut -c90- | sed 's/,/ /g' | awk '{print $1}')
WWPumpeStat=$(cat $HOME/data/Viessmann/log/ViessmannAPI.log | jq -r '.[31]' | cut -c92- | sed 's/}/ /g' | awk '{print $1}')
Modulation=$(cat $HOME/data/Viessmann/log/ViessmannAPI.log | jq '.[6]' | cut -c158- | sed 's/,/ /g' | awk '{print $1}')

Date=$(date +"%Y-%m-%d %H:%M:%S")

echo $Date

#echo "Gemeinsame Vorlauftemperatur : " $GemVorlTemp
#echo "Warmwasseraufbereitung an/aus: " $WWStatus
#echo "Warmwassertemperatur : " $WWTemp
#echo "Aussentemperatur : " $AussenTemp
#echo "HK1 Vorlauftemperatur : " $HK1_VorlTemp
#echo "HK1 Pumpe an/aus : " $HK1_PumpeStat
#echo "Brennerstarts : " $Brennerstarts
#echo "Brenner Stunden : " $Brennerstd
#echo "WW-Pumpe an/aus : " $WWPumpeStat
#echo "Modulation : " $Modulation

InsertStm="INSERT INTO tbl_ViessmData2 (VD_DatumZeit,"
InsertStm=$InsertStm"VD_AussenTemp,"
InsertStm=$InsertStm"VD_GemVorlTemp,"
InsertStm=$InsertStm"VD_BrennerStatus,"
InsertStm=$InsertStm"VD_BrennerStd,"
InsertStm=$InsertStm"VD_BrennerStarts,"
InsertStm=$InsertStm"VD_HK1_Temp,"
InsertStm=$InsertStm"VD_HK_Pumpe,"
InsertStm=$InsertStm"VD_WW_Pumpe,"
InsertStm=$InsertStm"VD_WW_Temp,"
InsertStm=$InsertStm"VD_Modulation)"
InsertStm=$InsertStm" VALUES (datetime('now','localtime'),"
InsertStm=$InsertStm$AussenTemp","
InsertStm=$InsertStm$GemVorlTemp","
InsertStm=$InsertStm"1,"
InsertStm=$InsertStm$Brennerstd","
InsertStm=$InsertStm$Brennerstarts","
InsertStm=$InsertStm$HK1_VorlTemp","
InsertStm=$InsertStm$HK1_PumpeStat","
InsertStm=$InsertStm$WWPumpeStat","
InsertStm=$InsertStm$WWTemp","
InsertStm=$InsertStm$Modulation")"

#echo $InsertStm

sqlite3 $HOME/data/Viessmann/Viessmann.db "$InsertStm"

Hallo @diwa ,

 

vielleicht hilft dir die Dikussion in diesem Thread weiter: https://www.viessmann-community.com/t5/Getting-started-programming-with/Some-code-to-receive-info-fr...

 

Bitte beachte, dass es keine definierte Reihenfolge der Inhalte für das zurückgegebene JSON-Array gibt. Ich empfehle, die enthaltenen Feature Namen im JSON-Array auszuwerten, um die Werte zu sortieren.

Top-Lösungsautoren