# Gadgeterweitung für Kostal Piko



## hallo neobox (4. Sep 2011)

Liebe Forengemeinde,
ich habe für meinen Wechselrichter ( Kostal Piko ) dieses Gadget gefunden. Es funktioniert super und ich würde es gerne um eine Funktion erweitern. Ich bin selber kein Programmierer sondern nur ein Googler der dann die codestücke hineinkopiert. Nur dieses mal stosse ich und google an die Grenzen!!!

Hier das Gadget:



```
//Initialisiert das Gadget
function initPIKO() {
	//Seite für die Einstellungen
	System.Gadget.settingsUI = "settings.html";
	//gespeicherte Einstellungen laden
	loadSettings();
	//Daten des Wechselrichters abfragen
	requestData();
}

//Daten des Wechselrichters mithilfe der Service-Prozeduren abholen
function requestData() {
	try {		 
    new Ajax.Request('http://' + System.Gadget.Settings.readString("address"), {
      method: 'post',
      requestHeaders: {Authorization: 'Basic ' + Base64.encode( System.Gadget.Settings.readString("username") + ':' + System.Gadget.Settings.readString("password") )},
			onSuccess: function(response) {
        var ipos1 = response.responseText.search( 'Gesamtenergie</td>' );
        var teil1 = response.responseText.substr( ipos1 + 18 );
        var start1 = teil1.search( '>' );
        var wert1 = teil1.substring( start1 + 1, teil1.search( '</td>') );

        var ipos2 = response.responseText.search( 'Tagesenergie</td>' );
        var teil2 = response.responseText.substr( ipos2 + 17 );
        var start2 = teil2.search( '>' );
        var wert2 = teil2.substring( start2 + 1, teil2.search( '</td>') );

        var ipos3 = response.responseText.search( 'aktuell</td>' );
        var teil3 = response.responseText.substr( ipos3 + 12 );
        var start3 = teil3.search( '>' );
        var wert3 = teil3.substring( start3 + 1, teil3.search( '</td>') );
        
			  document.getElementById("name").innerHTML = System.Gadget.Settings.readString("name");
			  document.getElementById("power").innerHTML = "Current: " + wert3 + " W";
			  document.getElementById("dailyYield").innerHTML = "Daily: " + wert2 + " kWh";
			  document.getElementById("totalYield").innerHTML = "Total: " + wert1 + " kWh";
			},
			onFailure: function(response) {
			  document.getElementById("power").innerHTML = response.status;
			}
    });
	}
	catch(e) {
		failure(); 
	}
	
	
	
	//Methode nach bestimmter Zeitspanne erneut aufrufen
	setTimeout("requestData()", System.Gadget.Settings.readString("interval") * 1000);
}

function failure() {
  document.getElementById("totalYield").innerHTML = "Total: Fehler!";
  document.getElementById("dailyYield").innerHTML = "Tag: Fehler!";
  document.getElementById("power").innerHTML = "Aktuell: Fehler!";
}
```

was ich gerne hätte wäre das einige daten die im script als variablen vorhanden sind dann alle 5 min in eine Datei abgelegt werden.

Die Datei soll min_days_.js heissen und braucht so einen Inhalt :


m[mi++]="21.11.07 13:20:00|258;307;896;239"
m[mi++]="21.11.07 13:15:00|180;214;875;228"
m[mi++]="21.11.07 13:10:00|196;233;860;235"
m[mi++]="21.11.07 13:05:00|187;223;843;235"


Die Angaben sind folgende 
m[mi++]=  fester Bestandteil
"21.11.07 13:05:00|  aktuelles Datum Uhrzeit in Std Min Sek und ein Trennstrich
 258;307;896;239" die Variablen Pac Pdc Tagesleistung in Wh (im Script unter Daily).

Diese Daten sollen alle 5 min hinzugefügt werden.
In der Nacht um 23:50 Uhr sollte die Datei dann wieder geleer werden, damit am nachsten Tag wieder neu Begonnen werden kann.

Ich und alle anderen Kostalbenutzer hoffen auf eure Hilfe. Es erspart und einen Logger für mehrerer Hundert Euro. Es Versteht sich natürlich von selber, das das Gadget freeare bleibt! 

Danke euch.

hallo neobox


----------



## Noctarius (4. Sep 2011)

http://www.java-forum.org/fuer-verirrte-fragen-javascript/15912-falschen-forum.html


----------



## em (9. Sep 2011)

Ich finds lustig, dass es für Leute für java script ein forum gibt  und wenn man darin eine Frage stellt, bekommt man einen Thread vor die augen geworfen, dass das kein JS Forum ist. Wofür existiert dann diese Kategorie im Forum? Um allen Leuten unter jeden Thread zu schreiben das es kein JS Forum ist?
simple Stupid!


----------



## delphiking1980 (21. Sep 2011)

Hallo,

ich frage mich was dann mit der JS Datei geschehen soll ??

Das Speichern in einer entsprechenden Variable (wird dann wohl eher ein Array) ist ja kein Problem nur dir ist bekannt das es nicht wirklich funktioniert das diese Daten auch in eine Datei geschrieben werden. D.h. man benötigt irgendwie immer eine Webplattform.

Mfg

Delphiking


----------



## Tomate_Salat (27. Sep 2011)

@em:
ganz einfach: Weil vllt doch jemand beim Problem helfen könnte und es die bessere Alternative zu "löschen" oder "thema schließen" ist. Aber letztendlich haben die TOs bessere Chancen auf Hilfe, wenn sie sich an ein offizielles JS-Forum wenden.


----------



## Evil-Devil (27. Sep 2011)

Die Frage die man sich zunächst stellen muss lautet. Kann dieses Widget überhaupt Dateien schreiben bzw. die dahinter stehende Lib? Zumindest scheint sie ja Einstellungen lesen zu können, nur schreiben wage ich zu bezweifeln.


----------

