Benzinpreis Adapter
Moderator: Co-Administratoren
-
- Beiträge: 453
- Registriert: 30.11.2016, 20:24
- Hat sich bedankt: 43 Mal
- Danksagung erhalten: 19 Mal
Re: Benzinpreis Adapter
Hallo Rainer,
im Prinzip hast Du ja Recht.
Klar, wäre es wesentlich einfacher, die Einträge würden vernünftig in der json gepflegt.
Dachte nur, es wäre möglich innerhalb der zuständigen Tanke-ID und dem zugehörigen Inhalt den entsprechenden Teil abzufangen.
Es soll ja kein fertiges Universalscript sein.
Man kann ja vielleicht (nur mein Gedankengang) anhand der json und deren Inhalt feststellen, ob die Einträge passend sind, oder nicht und dann anhand von der Scriptsyntax entscheiden, bei welcher ID man den String vor oder hinter dem "|" der "local"-Angabe in die Ausgabe zu bringen.
Ich kann das leider nicht beurteilen, daher meine Frage ob und wie das machbar ist.
BG
im Prinzip hast Du ja Recht.
Klar, wäre es wesentlich einfacher, die Einträge würden vernünftig in der json gepflegt.
Dachte nur, es wäre möglich innerhalb der zuständigen Tanke-ID und dem zugehörigen Inhalt den entsprechenden Teil abzufangen.
Es soll ja kein fertiges Universalscript sein.
Man kann ja vielleicht (nur mein Gedankengang) anhand der json und deren Inhalt feststellen, ob die Einträge passend sind, oder nicht und dann anhand von der Scriptsyntax entscheiden, bei welcher ID man den String vor oder hinter dem "|" der "local"-Angabe in die Ausgabe zu bringen.
Ich kann das leider nicht beurteilen, daher meine Frage ob und wie das machbar ist.
BG
Re: Benzinpreis Adapter
Wer soll da eine Datenbank erstellen bei welcher der Teil vor dem Pipe und bei welchen der Teil dahinter genommen werden soll?
Gruß
Rainer
Alle meine Hinweise sind auf eigene Gefahr umzusetzen. Immer einen Fachmann zu Rate ziehen!
-
- Beiträge: 453
- Registriert: 30.11.2016, 20:24
- Hat sich bedankt: 43 Mal
- Danksagung erhalten: 19 Mal
Re: Benzinpreis Adapter
Hmmm,
bin verwirrt... warum jetzt 14k+ Tanken?
Nicht dass es hier zu Mis(t)Verständnis kommt
Bekommt bei dem Abruf über die API und die XML den Daten aller Tanken
und fragt das Script dann über die Tanke-ID's die Daten für e5/e10/bald abgeschafft/ ab?
Dachte nur, dass man zur abgefragten ID statt "name" auch "brand" ausgeben kann
BG
bin verwirrt... warum jetzt 14k+ Tanken?
Nicht dass es hier zu Mis(t)Verständnis kommt
Bekommt bei dem Abruf über die API und die XML den Daten aller Tanken
und fragt das Script dann über die Tanke-ID's die Daten für e5/e10/bald abgeschafft/ ab?
Dachte nur, dass man zur abgefragten ID statt "name" auch "brand" ausgeben kann
BG
Re: Benzinpreis Adapter
Nein, aber das Skript ist ja nicht für dich allein.nimmnenkeks hat geschrieben:Bekommt bei dem Abruf über die API und die XML den Daten aller Tanken
Ok, da hab ich mich dann wahrscheinlich vertan, ich dachte vor dem Pipe sei brand, danach namenimmnenkeks hat geschrieben:Dachte nur, dass man zur abgefragten ID statt "name" auch "brand" ausgeben kann
Gruß
Rainer
Alle meine Hinweise sind auf eigene Gefahr umzusetzen. Immer einen Fachmann zu Rate ziehen!
-
- Beiträge: 10761
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 675 Mal
Re: Benzinpreis Adapter
Homoran hat da aber trotzdem vollkommen Recht.
Um das Script allgemein für jeden so lauffähig wie möglich zu halten, werden darin die Namen aus den Feldern ausgelesen. Werden diese Felder nicht aussagekräftig belegt, oder sie passen dir nicht, müsste man da eher schon zaubern. Für alle Tanken das Feld brand zu benutzen oder für alle name, das ist kein Problem, nur KI mäßig das Auslesen zu bewerten, dazu fehlt mir einfach schon der Antrieb weil ich gar keinen Sinn drin sehe.
Man könnte zwar selber eine Logik für die paar Tankstellennahmen in das Script schreiben, also Bei Tanke 1 lies Feld name aus, bei Tanke 2 lies Feld brand und bei Tanke 3 nimm wieder Feld name für den Namen.
Aber das macht eigentlich gar keinen Sinn. Da kann jeder für seine paar Tanken lieber selber eine ihm passende Namensliste anlegen und diese Namen im Script verwenden.
Hab mal schnell das verlinkte Script umgeschrieben. Leider ohne passende Hardware also blind. Sollte aber gehen.
Es gibt da eine neue Zeile, wo man den Namen zur Tanke selber festlegen kann, direkt unterhalb der IDs.
Das ist schneller und einfacher integriert als irgendeine KI.
Und das mit den Zaubern ist da so eine Sache.
Um das Script allgemein für jeden so lauffähig wie möglich zu halten, werden darin die Namen aus den Feldern ausgelesen. Werden diese Felder nicht aussagekräftig belegt, oder sie passen dir nicht, müsste man da eher schon zaubern. Für alle Tanken das Feld brand zu benutzen oder für alle name, das ist kein Problem, nur KI mäßig das Auslesen zu bewerten, dazu fehlt mir einfach schon der Antrieb weil ich gar keinen Sinn drin sehe.
Man könnte zwar selber eine Logik für die paar Tankstellennahmen in das Script schreiben, also Bei Tanke 1 lies Feld name aus, bei Tanke 2 lies Feld brand und bei Tanke 3 nimm wieder Feld name für den Namen.
Aber das macht eigentlich gar keinen Sinn. Da kann jeder für seine paar Tanken lieber selber eine ihm passende Namensliste anlegen und diese Namen im Script verwenden.
Hab mal schnell das verlinkte Script umgeschrieben. Leider ohne passende Hardware also blind. Sollte aber gehen.
Es gibt da eine neue Zeile, wo man den Namen zur Tanke selber festlegen kann, direkt unterhalb der IDs.
Das ist schneller und einfacher integriert als irgendeine KI.
Code: Alles auswählen
! Tankerkönig angepasst (c) by Alchy v0.5
! Namensvergabe selber möglich
var apikey = "+++++++++++++++++++++++"; !Ihr API-Key
var tankids = "676eb983-e637-40a9-a794-7a360b748e3f,2264a000-d8a4-4793-993c-fbb0b762fb50,51d4b626-a095-1aa0-e100-80009459e03a" ; ! Alle gewünschten Tankstellen komma separiert. Auch nur eine geht natürlich !
var tankname = "Tankpoint-Buer,Markant (Tankautomat),Tankstellenname 3"; ! Eigene Namen der Tanken, in selber Reihenfolge wie die obigen IDs
! URL der tankerkoenig.de API
string tankerKoenigURL = "https://creativecommons.tankerkoenig.de/json/detail.php";
string slist = "";
! 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
dom.GetObject("CUxD.CUX2801001:3.CMD_SETS").State(cmd);
dom.GetObject("CUxD.CUX2801001:3.CMD_QUERY_RET").State(1);
var srueck = dom.GetObject("CUxD.CUX2801001:3.CMD_RETS").State();
! 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 e5 = "-zu-";
var e10 = "-zu-";
var diesel ="-zu-";
if (open){
! Preis e5
var posValueStart = ",\"e5\":";
var posValueEnd = ",";
var posValue = srueck.Find(posValueStart) + posValueStart.Length();
var e5= srueck.Substr(posValue, 10).StrValueByIndex(posValueEnd, 0);
integer error = e5.Find("erro"); if (error> -1) { e5 = "Fehler";}
!Preis e10
var posValueStart = ",\"e10\":";
var posValueEnd = ",";
var posValue = srueck.Find(posValueStart) + posValueStart.Length();
var e10 = srueck.Substr(posValue, 10).StrValueByIndex(posValueEnd, 0);
integer error = e10.Find("erro"); if (error> -1) { e10 = "Fehler";}
! 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("erro"); if (error> -1) { diesel = "Fehler";}
}
slist = slist#name #" - " #diesel#" / " #e10 # " / " #e5 #"\n"; ! Beispielverwendung, alle Daten in eine Variable schreiben
}
WriteLine(slist); ! Ausgabe auf dem Bildschirm
! dom.GetObject("Tanken").State(slist); ! Speichern in Systemvariable die NICHT auf der Startseite der Klickibunti angezeigt werden darf
Und das mit den Zaubern ist da so eine Sache.
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.
-
- Beiträge: 453
- Registriert: 30.11.2016, 20:24
- Hat sich bedankt: 43 Mal
- Danksagung erhalten: 19 Mal
Re: Benzinpreis Adapter
Servus alchy,
für mal eben blind, macht das Script genau das, was ich vor hatte .
Danke!
Somit auch für jeden so umsetzbar!
Jeder geht diese Dinge ja anders an und hat unterschiedliche Ansätze, die auf dem Wissensstand basieren und diesen nutzen.
Heraus kommt dann eine so umgesetzte Lösung, die nicht zur Neuerfindung des Rades führen muss.
Ich pers. dachte bei meiner Frage da an die Möglichkeit eine Auswahl von "name" und "brand" durch Konfigurationszeilen (wie auch bei den abzugreifenden ID's selbst)
GET name "id1, id2" ! ID's durch Komma trennen
GET brand "id2, id4" ! ID's durch Komma trennen
und in der Weiterverabeitung zu nutzen.
Macht aber durch Deine Lösung absolut keinen Sinn, KISS
Bin ja noch blutiger Anfänger in HM und mehr mit t&e unterwegs, wollte da keine neue KI für Tankstellenbezeichner!
Das mit dem Zaubern ist ja immer so eine Sache, obwohl ich da bei Dir nicht sicher bin, ob Du das nicht auf nem ZX81 hinbekommst.
BG
für mal eben blind, macht das Script genau das, was ich vor hatte .
Danke!
Somit auch für jeden so umsetzbar!
Jeder geht diese Dinge ja anders an und hat unterschiedliche Ansätze, die auf dem Wissensstand basieren und diesen nutzen.
Heraus kommt dann eine so umgesetzte Lösung, die nicht zur Neuerfindung des Rades führen muss.
Ich pers. dachte bei meiner Frage da an die Möglichkeit eine Auswahl von "name" und "brand" durch Konfigurationszeilen (wie auch bei den abzugreifenden ID's selbst)
GET name "id1, id2" ! ID's durch Komma trennen
GET brand "id2, id4" ! ID's durch Komma trennen
und in der Weiterverabeitung zu nutzen.
Macht aber durch Deine Lösung absolut keinen Sinn, KISS
Bin ja noch blutiger Anfänger in HM und mehr mit t&e unterwegs, wollte da keine neue KI für Tankstellenbezeichner!
Das mit dem Zaubern ist ja immer so eine Sache, obwohl ich da bei Dir nicht sicher bin, ob Du das nicht auf nem ZX81 hinbekommst.
BG
-
- Beiträge: 10761
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 675 Mal
Re: Benzinpreis Adapter
Schön, so soll es sein.nimmnenkeks hat geschrieben: für mal eben blind, macht das Script genau das, was ich vor hatte .
id2 ist doppelt - Wenn du vorher selber festlegen musst, ob du brand oder name willst, dann kannst du es gleich so in eine Liste hauen. Hat ja nichts mit KI zu tun.nimmnenkeks hat geschrieben: GET name "id1, id2" ! ID's durch Komma trennen
GET brand "id2, id4" ! ID's durch Komma trennen
Der ZX hatte ne Tastatur - damit besser als ein Handy heute - ok. nicht ganz so leistungsfähig, aber eine tastatur.nimmnenkeks hat geschrieben: ob Du das nicht auf nem ZX81 hinbekommst.
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.
-
- Beiträge: 453
- Registriert: 30.11.2016, 20:24
- Hat sich bedankt: 43 Mal
- Danksagung erhalten: 19 Mal
Re: Benzinpreis Adapter
...wenn es einem nicht die Buxe ausziehen würde, das OS (und meine Augen) nicht etwas älter wäre(n)....
ich hab noch nen Qtek9000
Danke noch einmal an Euch für Input und Lösung!
BTT
BG
Keks
ich hab noch nen Qtek9000
Danke noch einmal an Euch für Input und Lösung!
BTT
BG
Keks
-
- Beiträge: 112
- Registriert: 13.08.2014, 17:26
- System: CCU
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 1 Mal
Re: Benzinpreis Adapter
Hallöle,
erstmal Danke auch an Alchy für die Geduld hier in dem Forum, die ist nicht selbstverständlich.
Die letzten Tage habe ich wirklich viel mit lesen und probieren verbracht. Solangsam wird ein Schuh draus, den Zweiten suche ich aber noch ....
Derzeit will aber hier die Geschichte nicht ganz so Anlaufen.
Das Script läuft soweit im Test, jedoch schreibt es keinen Wert in die Variable. Könnt ihr mal drüber schauen wo der Fehler sein könnte?
Folgende Variablen sind angelegt:
- Tanken (Zeichenkette)
- diesel (Zahl 0-99.999)
Vielen Dank im Voraus
erstmal Danke auch an Alchy für die Geduld hier in dem Forum, die ist nicht selbstverständlich.
Die letzten Tage habe ich wirklich viel mit lesen und probieren verbracht. Solangsam wird ein Schuh draus, den Zweiten suche ich aber noch ....
Derzeit will aber hier die Geschichte nicht ganz so Anlaufen.
Das Script läuft soweit im Test, jedoch schreibt es keinen Wert in die Variable. Könnt ihr mal drüber schauen wo der Fehler sein könnte?
Code: Alles auswählen
Copy des Scriptes entfernt
- Tanken (Zeichenkette)
- diesel (Zahl 0-99.999)
Vielen Dank im Voraus
-
- Beiträge: 10761
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 675 Mal
Re: Benzinpreis Adapter
Dann entferne nicht die Kopfzeile eines meiner Scripte, damit ich weiß mit welcher Version du arbeitest.Sunny77 hat geschrieben: erstmal Danke auch an Alchy für die Geduld hier in dem Forum, die ist nicht selbstverständlich.
Du behauptest zwar es läuft, es wird nur nichts in der Variable gespeichert, aber doch zur Sicherheit:
1. Du hast darin u.a. den Namen des CUxD.exec Gerätes angepasst, du hast ein cuxd.exec mit CUX2801002.?
2. möglicher Fehler: dir ist bewußt, das nur in einer VAriable gespeichert wird, wenn du das Ausrufezeichen vor der Zeile entfernst?
! dom.GetObject("Tanken").State(slist); ! Speichern in Systemvariable
3. wenn 1 & 2 klar sind, dann hast du noch ein weiteres Objekt mit dem Namen Tanken
4.>> Fehlerprotokoll << vom Zeitpunkt der Ausführung posten.
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.