Benzinpreis Adapter

WebUIs (DashUI, yahui, ...), Adapter (Hue, IRTrans, Sonos, ...), Logging, Scripting

Moderator: Co-Administratoren

alchy
Beiträge: 10752
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 672 Mal

Re: Benzinpreis Adapter

Beitrag von alchy » 18.06.2017, 22:10

Sollte noch funktionieren.

Code: Alles auswählen

! Tankerkönig angepasst (c) by Alchy v. gestrippte Version !
! Namensvergabe selber möglich, Fehlerdebugg hinzugefügt 
var apikey = "+++++++++++++"; !Ihr API-Key
var tankids = "51d4b44e-a095-1aa0-e100-80009459e03a,1d20272c-13a5-4f52-95d9-a1c213403561" ; ! Alle gewünschten Tankstellen komma separiert. Auch nur eine geht natürlich !
var tankname = "Tankstelle_JET_diesel,Tankstelle_HEMER_diesel"; ! Namen der Variablen, wo Dieselpreis gespeichert soll
! URL der tankerkoenig.de API
string tankerKoenigURL = "https://creativecommons.tankerkoenig.de/json/detail.php";
string slist = "";
string srueck = "FEHLER";
! Nun über alle ausgesuchten Tankstellen iterieren.
string tankid;
integer count = 0;
foreach(tankid, tankids.Split(",")) {
count = count + 1;
string cmd = "/usr/local/addons/cuxd/curl --trace trace.txt -k -X GET -H \"Content-Type:application/json\" -G " # "-d id=" # tankid # " -d apikey=" # apikey # " " #tankerKoenigURL;
! curl Abfrage starten
if (dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_SETS")){
dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_SETS").State(cmd);
dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
var srueck = dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_RETS").State();
}else{WriteLine("FEHLER Datenpunkt");}

! Name
var name = tankname.StrValueByIndex(",",count-1);
! offen
var posValueStart = ",\"isOpen\":";
var posValueEnd = ",";
var posValue = srueck.Find(posValueStart) + posValueStart.Length();
var open = srueck.Substr(posValue, 10).StrValueByIndex(posValueEnd, 0);
if (open == "true" ) { open = true; }else{ open = false;}
var diesel ="-zu-";
if (open){
! Preis Diesel
var posValueStart = ",\"diesel\":";
var posValueEnd = ",";
var posValue = srueck.Find(posValueStart) + posValueStart.Length();
var diesel = srueck.Substr(posValue, 10).StrValueByIndex(posValueEnd, 0);
integer error = diesel.Find("error"); if (error> -1) { diesel = "Fehler";}
}
if (dom.GetObject(ID_SYSTEM_VARIABLES).Get(name)){dom.GetObject(ID_SYSTEM_VARIABLES).Get(name).State(diesel);}else{ WriteLine(diesel#" konnte nicht gespeichert werden, da Variable fehlt");}
}
Wie lautet die Ausgabe unter Script testen, oder noch besser die JSON Ausgabe des Script Executers?

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

k-face
Beiträge: 7
Registriert: 15.06.2017, 15:11

Re: Benzinpreis Adapter

Beitrag von k-face » 19.06.2017, 10:19

hier mal die Meldung

Code: Alles auswählen

Error 1 at row 38 col 14 near ^Â = diesel.Find("error"); if (error> -1) { diesel = "Fehler";}
}
if (dom.GetObje
Error 1 at row 38 col 14 near ^Â = diesel.Find("error"); if (error> -1) { diesel = "Fehler";}
}
if (dom.GetObje
Error 1 at row 38 col 14 near ^Â = diesel.Find("error"); if (error> -1) { diesel = "Fehler";}
}
if (dom.GetObje
Parse following code failed:
! Tankerkönig angepasst (c) by Alchy v. gestrippte Version !
! Namensvergabe selber möglich, Fehlerdebugg hinzugefügt 
var apikey = "*********************"; !Ihr API-Key
var tankids = "51d4b44e-a095-1aa0-e100-80009459e03a,1d20272c-13a5-4f52-95d9-a1c213403561" ; ! Alle gewünschten Tankstellen komma separiert. Auch nur eine geht natürlich !
var tankname = "Tankstelle_JET_diesel,Tankstelle_HEMER_diesel"; ! Namen der Variablen, wo Dieselpreis gespeichert soll
! URL der tankerkoenig.de API
string tankerKoenigURL = "https://creativecommons.tankerkoenig.de/json/detail.php";
string slist = "";
string srueck = "FEHLER";
! Nun über alle ausgesuchten Tankstellen iterieren.
string tankid;
integer count = 0;
foreach(tankid, tankids.Split(",")) {
count = count + 1;
string cmd = "/usr/local/addons/cuxd/curl --trace trace.txt -k -X GET -H \"Content-Type:application/json\" -G " # "-d id=" # tankid # " -d apikey=" # apikey # " " #tankerKoenigURL;
! curl Abfrage starten
if (dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_SETS")){
dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_SETS").State(cmd);
dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
var srueck = dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_RETS").State();
}else{WriteLine("FEHLER Datenpunkt");}

! Name
var name = tankname.StrValueByIndex(",",count-1);
! offen
var posValueStart = ",\"isOpen\":";
var posValueEnd = ",";
var posValue = srueck.Find(posValueStart) + posValueStart.Length();
var open = srueck.Substr(posValue, 10).StrValueByIndex(posValueEnd, 0);
if (open == "true" ) { open = true; }else{ open = false;}
var diesel ="-zu-";
if (open){
! Preis Diesel
var posValueStart = ",\"diesel\":";
var posValueEnd = ",";
var posValue = srueck.Find(posValueStart) + posValueStart.Length();
var diesel = srueck.Substr(posValue, 10).StrValueByIndex(posValueEnd, 0);
integer error = diesel.Find("error"); if (error> -1) { diesel = "Fehler";}
}
if (dom.GetObject(ID_SYSTEM_VARIABLES).Get(name)){dom.GetObject(ID_SYSTEM_VARIABLES).Get(name).State(diesel);}
}


alchy
Beiträge: 10752
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 672 Mal

Re: Benzinpreis Adapter

Beitrag von alchy » 19.06.2017, 20:39

Bitte keine Umwege über einen Editor - Script direkt aus dem Forum in das Fenster kopieren und dort nur den API Key ändern.
Und/oder anderen Browser verwenden.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

k-face
Beiträge: 7
Registriert: 15.06.2017, 15:11

Re: Benzinpreis Adapter

Beitrag von k-face » 20.06.2017, 11:21

Ahh perfekt, das geht jetzt soweit. danke sehr :)

k-face
Beiträge: 7
Registriert: 15.06.2017, 15:11

Re: Benzinpreis Adapter

Beitrag von k-face » 20.06.2017, 19:57

wie würde denn das Skript aussehen, wenn ich nur die e5 preise mir anzeigen lassen will?

alchy
Beiträge: 10752
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 672 Mal

Re: Benzinpreis Adapter

Beitrag von alchy » 20.06.2017, 20:15

Ein Seite zurück das originale Script nehmen und auch mal ein wenig lesen.
Oder irgendwo im Thread.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

mike9677
Beiträge: 422
Registriert: 17.04.2011, 11:08

Re: Benzinpreis Adapter

Beitrag von mike9677 » 28.06.2017, 08:38

alchy hat geschrieben:Sollte noch funktionieren.
Kann es sein, dass hier ein Fehler ist ?
Unbenannt.PNG

Gruß
mike

alchy
Beiträge: 10752
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 672 Mal

Re: Benzinpreis Adapter

Beitrag von alchy » 28.06.2017, 18:38

Ja, das ist so falsch. Da gehört der gleiche Kanal hin.
Sorry, mein Fehler. Ich habe das nicht getestet, da ich keine ID habe.

Hab es korrigiert. Aber der obige Fehler kommt nicht daher. :mrgreen:

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

mike9677
Beiträge: 422
Registriert: 17.04.2011, 11:08

Re: Benzinpreis Adapter

Beitrag von mike9677 » 29.06.2017, 07:25

alchy hat geschrieben:Aber der obige Fehler kommt nicht daher. :mrgreen:
Richtig. War ein Variablen-Problem. Läuft jetzt!
Danke

mike

waller
Beiträge: 17
Registriert: 11.02.2017, 11:06
Wohnort: Freital
Danksagung erhalten: 2 Mal

Re: Benzinpreis Adapter

Beitrag von waller » 27.07.2018, 18:51

Hallo Alchy
Es hat sich scheinbar lange keiner mit dem Thema befasst. Oder alle sich zufrieden. Mal sehen ob noch jemand etwas dazu sagt. Kann man In de Systemvariablen vom Typ Zeichenkette jede angezeigte Tankstelle auf einer neunen Zeile anzeigen. Also sprich einen Zeilenumbruch hinter dem Preis erzwingen ? Dabei würden die Preise dann ordentlich untereinander stehen.
Das Skript "Tankerkönig angepasst (c) by Alchy v0.6" vom 19.01.2017 find ich dafür wie geschaffen.

waller
RaspberryMatic mit 90 Geräten

Antworten

Zurück zu „CCU.IO“