Benzinpreise Mediola Creator

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Antworten
R0bRakete
Beiträge: 22
Registriert: 08.12.2015, 20:34

Benzinpreise Mediola Creator

Beitrag von R0bRakete » 14.03.2019, 20:56

Ich weiß, das Thema wurde hier schon mehrmals besprochen, aber die Threats dazu sind entweder ziemlich alt, oder ziemlich überfüllt.
Ich habe folgendes Problem:
In meiner Mediola Fernbedienung möchte ich die Benzinpreise mehrerer Tankstellen anzeigen lassen. Dazu habe ich ein Script hier aus dem Forum verwendet:

Code: Alles auswählen

!-----------------------------------------------------------------------------
! Basisdaten definieren
!-----------------------------------------------------------------------------

var apikey = "0cd990c8-abd8-c980-c5be-daa7564bbc89"; !API KEY EINTRAGEN
var tankid = "51d4b424-a095-1aa0-e100-80009459e03a"; !TANKSTELLEN ID EINTRAGEN

!-----------------------------------------------------------------------------
! Werte von tankerkoenig holen
!-----------------------------------------------------------------------------
   
string tankenUrl = "https://creativecommons.tankerkoenig.de/json/detail.php";
string params = "-d id=" + tankid + " -d apikey=" + apikey; 
string cmd = "LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl --trace trace.txt -k -X GET -H \"Content-Type:application/json\" -G " + params + " " + tankenUrl;

var stdout;
var posStart;
var posEnd;
var preis;
var substring;
var posValueStart;
var posValueEnd;
var posValue;
    
dom.GetObject("CUxD.CUX2801001:2.CMD_SETS").State(cmd);
dom.GetObject("CUxD.CUX2801001:2.CMD_QUERY_RET").State(1);
stdout  = dom.GetObject("CUxD.CUX2801001:2.CMD_RETS").State();
   
!-----------------------------------------------------------------------------
! Preise aus Daten von tankerkoenig auslesen und in CCU Variablen schreiben
!-----------------------------------------------------------------------------

posStart = "{";
posEnd = "}";
substring = stdout.Substr(stdout.Find(posStart), stdout.Find(posEnd));

! --- Preis E10
posValueStart = "\"e10\":";
posValueEnd = ",";
posValue = substring.Find(posValueStart) + posValueStart.Length();
preis = substring.Substr(posValue, 6).StrValueByIndex(posValueEnd, 0) ;
dom.GetObject("tanken_e10_jet").Variable(preis.ToFloat());                     !EIGENE VARIABLE EINTRAGEN
!-----------

! --- Preis E5
!posValueStart = "\"e5\":";
!posValueEnd = ",";
!posValue = substring.Find(posValueStart) + posValueStart.Length();
!preis = substring.Substr(posValue, 6).StrValueByIndex(posValueEnd, 0) ;
!dom.GetObject("EIGENE VARIABLE").Variable(preis.ToFloat());                     !EIGENE VARIABLE EINTRAGEN
!-----------

! --- Preis Diesel
!posValueStart = "\"diesel\":";
!posValueEnd = ",";
!posValue = substring.Find(posValueStart) + posValueStart.Length();
!preis = substring.Substr(posValue, 6).StrValueByIndex(posValueEnd, 0) ;
!dom.GetObject("EIGENE VARIABLE").Variable(preis.ToFloat());                     !EIGENE VARIABLE EINTRAGEN
!-----------
Das funktioniert auch ganz gut, allerdings nur für zwei Tankstellen. Ich weiß, dass das script jeweils nur eine Variable schreibt, ich lasse das script aber 4 mal mit 20 Sekunden Abstand durchlaufen. Wie gesagt, für 2 Tankstellen klappt es auch.
Weiß jemand, wieso nicht für alle vier?
Danke
Dateianhänge
pic.jpg

Antworten

Zurück zu „HomeMatic allgemein“