Benzinpreis Adapter
Moderator: Co-Administratoren
Re: Benzinpreis Adapter
dann werde ich auch mal das Skript testen
Joe
Joe
317 Kanäle in 124 Geräten und 81 CUxD-Kanäle in 10 CUxD-Geräten
Expertenmodus (Sammy) - Datenpunkteliste (anli) - erweiterter Skript-Parser (anli) - Inventurliste (uwe111) - SystemExec durch CuxD ersetzen (JPS)
Expertenmodus (Sammy) - Datenpunkteliste (anli) - erweiterter Skript-Parser (anli) - Inventurliste (uwe111) - SystemExec durch CuxD ersetzen (JPS)
Re: Benzinpreis Adapter
1. CUxD installieren
2. CUxD öffenen (Bild 1)
3. Virtuelles Gerät anlegen (Bild 2)
4. Posteingang auf CCU prüfen,
5. Gerät hinzufügen,
6. Gerät erst einstellen!!! Einen Chanel! Gerätekennung notieren (Bild 3)
7. In dem Script in den Zeilen 6 bis 8 die Gerätekennung anpassen
8. Zeilen aus dem Script löschen
9. Variablen für Zahl auf CCU anlegen (Bild 4)
10. Script in Programm einbetten
Probiert mal.
Wenn du noch Probleme hast, ginge Kommunikation auch schneller per Whatsapp.
Nummer dann aber per Mail, nicht hier
Mario.
2. CUxD öffenen (Bild 1)
3. Virtuelles Gerät anlegen (Bild 2)
4. Posteingang auf CCU prüfen,
5. Gerät hinzufügen,
6. Gerät erst einstellen!!! Einen Chanel! Gerätekennung notieren (Bild 3)
7. In dem Script in den Zeilen 6 bis 8 die Gerätekennung anpassen
Code: Alles auswählen
!hier ist die Abfrage mit CUxD
dom.GetObject("CUxD.CUX2801005:1.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801005:1.CMD_QUERY_RET").State(1);
string sprit_xml = dom.GetObject("CUxD.CUX2801005:1.CMD_RETS").State();
Code: Alles auswählen
!---------------------------------------------------------------------------------------------------------------------------
object o = dom.GetObject('Preis_Super_Benzin');
var x = o.State(sprit_1_wert);
dom.GetObject("CUxD.CUX2801004:1.LOGIT").State(o.Name()#";"#o.Value());
object o = dom.GetObject('Preis_Super_E10');
var x = o.State(sprit_2_wert);
dom.GetObject("CUxD.CUX2801004:1.LOGIT").State(o.Name()#";"#o.Value());
object o = dom.GetObject('Preis_Diesel');
var x = o.State(sprit_3_wert);
dom.GetObject("CUxD.CUX2801004:1.LOGIT").State(o.Name()#";"#o.Value());
! LOGIT=CUX2801004:1 Preis_Super_Benzin --> in CUxD eintragen
! LOGIT=CUX2801004:1 Preis_Super_E10 --> in CUxD eintragen
! LOGIT=CUX2801004:1 Preis_Diesel --> in CUxD eintragen
10. Script in Programm einbetten
Probiert mal.
Wenn du noch Probleme hast, ginge Kommunikation auch schneller per Whatsapp.
Nummer dann aber per Mail, nicht hier
Mario.
Mario
Re: Benzinpreis Adapter
Wenn die Zeilen unterhalb des Striches alle gelöscht sind, wo/wie werden dann die (Zahlen)Variablen befüllt ?8. Zeilen aus dem Script löschen
Gruß
Dirk
RaspberryMatic mit CUxD, XML-API und Email-Addon, Visualisierung mittels ioBroker auf Android 22"-Wandtablet
http://www.DessauWetter.de
Dirk
RaspberryMatic mit CUxD, XML-API und Email-Addon, Visualisierung mittels ioBroker auf Android 22"-Wandtablet
http://www.DessauWetter.de
Re: Benzinpreis Adapter
Ich möchte mich hier nochmal ganz herzlich für dieses tolle Script bedanken. Es funktioniert perfekt. Ich habe es mit Pushover kombiniert und logen die Dieselpreise in Highchart.
Super.
Vielen Dank.
LG
Markus
Super.
Vielen Dank.
LG
Markus
Re: Benzinpreis Adapter
Wenn du die Zeilen löschst must Du die Werte zusätzlich in die Sysvar schreiben:
dom.GetObject("Preis_Diesel").State(sprit_3_wert);
dom.GetObject("Preis_Super_Benzin").State(sprit_1_wert);
dom.GetObject("Preis_Super_E10").State(sprit_2_wert);
LG
Markus
dom.GetObject("Preis_Diesel").State(sprit_3_wert);
dom.GetObject("Preis_Super_Benzin").State(sprit_1_wert);
dom.GetObject("Preis_Super_E10").State(sprit_2_wert);
LG
Markus
Re: Benzinpreis Adapter
Bei mir funktioniert es nicht.
Ich habe mir jetzt das zweite mal damit die CCU2 abgeschossen.
Die 4 Variablen habe ich angelegt.
Das System.Exec Gerät CUxD.CUX2801002 ist in der CCU2 vorhanden.
(CUxD.CUX2801001 nutze ich bereits für andere Exec-Aufgaben)
Wenn ich dann aber ein Programm mit dem Script erstelle und auf Testen gehe steht "keine Fehler",
aber die CCU2 hat sich aufgehangen. Im "Dann"-Zweig habe ich auf einmal ein rotes Kreuz statt dem Script und das war es.
Nach dem Neustart sind die Variablen und das Programm weg.
Könnte mal jemand mit Wissen nach Fehlern in meinem Script schauen ?
Ich habe mir jetzt das zweite mal damit die CCU2 abgeschossen.
Die 4 Variablen habe ich angelegt.
Das System.Exec Gerät CUxD.CUX2801002 ist in der CCU2 vorhanden.
(CUxD.CUX2801001 nutze ich bereits für andere Exec-Aufgaben)
Wenn ich dann aber ein Programm mit dem Script erstelle und auf Testen gehe steht "keine Fehler",
aber die CCU2 hat sich aufgehangen. Im "Dann"-Zweig habe ich auf einmal ein rotes Kreuz statt dem Script und das war es.
Nach dem Neustart sind die Variablen und das Programm weg.
Könnte mal jemand mit Wissen nach Fehlern in meinem Script schauen ?
- Dateianhänge
-
- benzinpreis-aktuell.txt
- (2.42 KiB) 134-mal heruntergeladen
Gruß
Dirk
RaspberryMatic mit CUxD, XML-API und Email-Addon, Visualisierung mittels ioBroker auf Android 22"-Wandtablet
http://www.DessauWetter.de
Dirk
RaspberryMatic mit CUxD, XML-API und Email-Addon, Visualisierung mittels ioBroker auf Android 22"-Wandtablet
http://www.DessauWetter.de
-
- Beiträge: 10767
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 675 Mal
Re: Benzinpreis Adapter
Das Script (in deinem Anhang) als solches ist in Ordnung und funktioniert.
ich vermute ein Wirrwarr im CUXD Exec Gerät.
Du solltest erstmal unter Script testen oder dem Executer ausprobieren.
Die Variablenschreiberei kann auch noch Probleme machen, also ist sie hier raus:
Das ist soweit gekürzt, das es funktionieren muss. Als Ausgabe erhälts du dann
Sollte das nicht funktionieren kannst Du die CUXD Nummer ändern. Wenn Du einen anderen Kanal des Gerätes benützen willst wird die Nummer hinter dem : anders.
Aus CUxD.CUX2801001:1 wird dann CUxD.CUX2801001:2
Hast Du wirklich 2 exec Geräte angelegt?
Alchy
Alchy
ich vermute ein Wirrwarr im CUXD Exec Gerät.
Du solltest erstmal unter Script testen oder dem Executer ausprobieren.
Die Variablenschreiberei kann auch noch Probleme machen, also ist sie hier raus:
Code: Alles auswählen
!Stand 24.12.2014
var url = "http://www.benzinpreis-aktuell.de/widget/4549w";
!hier ist die Abfrage mit CUxD
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string sprit_xml = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
var pos = sprit_xml.Find('class="pa"');
var len = sprit_xml.Length();
string sprit_xml_n = sprit_xml.Substr(pos + 11, (len - pos - 11));
string sprit_xml = sprit_xml_n;
var pos = sprit_xml_n.Find('/div');
string sprit_1 = sprit_xml_n.Substr(0, pos);
var len = sprit_1.Length();
string sprit_1_wert = sprit_1.Substr(0,5);
string sprit_1_name = sprit_1.Substr(13, (len - 15));
var pos = sprit_xml.Find('class="pa"');
var len = sprit_xml.Length();
string sprit_xml_n = sprit_xml.Substr(pos + 11, (len - pos - 11));
string sprit_xml = sprit_xml_n;
var pos = sprit_xml_n.Find('/div');
string sprit_2 = sprit_xml_n.Substr(0, pos);
var len = sprit_2.Length();
string sprit_2_wert = sprit_2.Substr(0,5);
string sprit_2_name = sprit_2.Substr(13, (len - 15));
var pos = sprit_xml.Find('class="pa"');
var len = sprit_xml.Length();
string sprit_xml_n = sprit_xml.Substr(pos + 11, (len - pos - 11));
string sprit_xml = sprit_xml_n;
var pos = sprit_xml_n.Find('/div');
string sprit_3 = sprit_xml_n.Substr(0, pos);
var len = sprit_3.Length();
string sprit_3_wert = sprit_3.Substr(0,5);
string sprit_3_name = sprit_3.Substr(13, (len - 15));
WriteLine(sprit_1_name);
WriteLine(sprit_1_wert);
WriteLine(sprit_2_name);
WriteLine(sprit_2_wert);
WriteLine(sprit_3_name);
WriteLine(sprit_3_wert);
Code: Alles auswählen
Super Benzin
1.349
Super E10
1.329
Diesel
1.149
Aus CUxD.CUX2801001:1 wird dann CUxD.CUX2801001:2
Hast Du wirklich 2 exec Geräte angelegt?
Alchy
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.
Re: Benzinpreis Adapter
Danke, alchy.
Im Executer steht dann:
Ich habe 2 exec-Geräte angelegt zur Zeit. Werde es dann aber noch mal mit dem ersten CUxD.CUX2801001:2 testen (die :1 wird verwendet).
Wäre sowieso bald einer meiner nächsten Fragen gewesen, mehrere system.exec-Geräte oder mehrere Kanäle mit einem Gerät ?
Ich dachte erst es hängt mit der Variable Benzinpreis_Aktualisierung zusammen, wie die befüllt wird habe ich auch noch nicht raus.
Im Executer steht dann:
Code: Alles auswählen
{
"sessionId": "",
"sprit_1": "1.349 \/span \nSuper Benzin",
"sprit_2_name": "Super E10",
"STDOUT": "Super Benzin\r\n1.349\r\nSuper E10\r\n1.329\r\nDiesel\r\n1.149\r\n",
"url": "http:\/\/www.benzinpreis-aktuell.de\/widget\/4549w",
"sprit_2": "1.329 \/span \nSuper E10",
"sprit_3": "1.149 \/span \nDiesel",
"sprit_2_wert": "1.329",
"len": "21",
"sprit_xml": "1.149 \/span \nDiesel\n \/div \n\n div id=\"disclaim\" \nAlle Angaben ohne Gewähr. Es gelten ausschließlich die Preise an den Zapfsäulen der Tankstelle.\n \/div \n\n div id=\"copy\" \n img src=\"icon.png\" alt=\"Benzinpreis-Aktuell.de\" class=\"icony\" \/ \n© 2015 br\/ www.benzinpreis-aktuell.de\n \/div \n\n\n \/div \n \/a \n \/body \n \/html",
"pos": "21",
"sprit_1_name": "Super Benzin",
"sprit_1_wert": "1.349",
"sprit_3_name": "Diesel",
"sprit_3_wert": "1.149",
"httpUserAgent": "",
"sprit_xml_n": "1.149 \/span \nDiesel\n \/div \n\n div id=\"disclaim\" \nAlle Angaben ohne Gewähr. Es gelten ausschließlich die Preise an den Zapfsäulen der Tankstelle.\n \/div \n\n div id=\"copy\" \n img src=\"icon.png\" alt=\"Benzinpreis-Aktuell.de\" class=\"icony\" \/ \n© 2015 br\/ www.benzinpreis-aktuell.de\n \/div \n\n\n \/div \n \/a \n \/body \n \/html"
}
Wäre sowieso bald einer meiner nächsten Fragen gewesen, mehrere system.exec-Geräte oder mehrere Kanäle mit einem Gerät ?
Ich dachte erst es hängt mit der Variable Benzinpreis_Aktualisierung zusammen, wie die befüllt wird habe ich auch noch nicht raus.
Gruß
Dirk
RaspberryMatic mit CUxD, XML-API und Email-Addon, Visualisierung mittels ioBroker auf Android 22"-Wandtablet
http://www.DessauWetter.de
Dirk
RaspberryMatic mit CUxD, XML-API und Email-Addon, Visualisierung mittels ioBroker auf Android 22"-Wandtablet
http://www.DessauWetter.de