NEWS
[Aufruf] fullyBrowser Adapter
-
Ja, aber das Script läuft ja normalerweise.
Im Originalzustand hole ich direkt aus Fully (separates Script) den Akkuwert und schreibe den dann in einen Datenpunkt.
Diesen Datenpunkt frage ich dann mit dem Script ab und es lädt zwischen 20 und 80%.
Erst wenn ich den Datenpunkt dann auf den Datenpunkt vom Adapter lege gibt es das seltsame Verhalten.
-
Darum sollt man eben schauen was der Skript wirklich ausliest.
-
Also:
Script 1 zum Auslesen des Akkustands und in einen Datenpunkt schreiben - funktioniert
var request = require('request'); var link = "http://192.168.8.XXX:2323/?cmd=deviceInfo&type=json&password=XXXX"; var state = "javascript.0.Allgemein.Akku_Tablet"/*Akku_Tablet*/; function fully() { request(link, function(error,response, body) { if(error) log('Fehler request: ' + error, 'error'); else { objects = JSON.parse(body); bat = objects.batteryLevel; setState(state, bat); log ("batteryLevel = " + bat); } }); } fully(); schedule('*/10 * * * *', fully);
Script 2 zum Laden aus diesem Datenpunkt - funktioniert
const idBatt = 'javascript.0.Allgemein.Akku_Tablet'; // Batterielevel in % const idPlug = 'sonoff.0.Ladestecker.POWER'; // Ladegerät ein const idVis = 'Vis.Batterieanzeige'; // Für Vis createState(idVis, 0, { type: 'number', min: 0, max: 7, role: 'level', states: { 0: 'leer', 1: '20 %', 2: '40 %', 3: '60 %', 4: '80 %', 5: 'voll', 6: 'Ladegerät' } }); var level = getState(idBatt).val; var plug = getState(idPlug).val; function batt() { var state = 5; // full 80 % if(level <= 79) state = 4; // 79 % if(level <= 60) state = 3; // 60 % if(level <= 40) state = 2; // 40 % if(level <= 30) state = 1; // 20 % if(level <= 22) state = 0; // empty 20 % if(plug) state = 6; // Ladegerät ein setState(idVis, state, true); if(level >= 80 && plug) setState(idPlug, false); if(level <= 30 && !plug) setState(idPlug, true); } batt(); // Skriptstart on(idBatt, function(dp) { level = dp.state.val; batt(); }); on(idPlug, function(dp) { plug = dp.state.val; batt(); });
Script 3 zum Auslesen und Laden aus dem Fully Adapter - funktioniert nicht:
const idBatt = 'fullybrowser.0.192_168_8_225.Info.batteryLevel'; // Batterielevel in % const idPlug = 'sonoff.0.Ladestecker.POWER'; // Ladegerät ein const idVis = 'Vis.Batterieanzeige'; // Für Vis createState(idVis, 0, { type: 'number', min: 0, max: 7, role: 'level', states: { 0: 'leer', 1: '20 %', 2: '40 %', 3: '60 %', 4: '80 %', 5: 'voll', 6: 'Ladegerät' } }); var level = getState(idBatt).val; var plug = getState(idPlug).val; function batt() { var state = 5; // full 80 % if(level <= 79) state = 4; // 79 % if(level <= 60) state = 3; // 60 % if(level <= 40) state = 2; // 40 % if(level <= 30) state = 1; // 20 % if(level <= 22) state = 0; // empty 20 % if(plug) state = 6; // Ladegerät ein setState(idVis, state, true); if(level >= 80 && plug) setState(idPlug, false); if(level <= 30 && !plug) setState(idPlug, true); } batt(); // Skriptstart on(idBatt, function(dp) { level = dp.state.val; batt(); }); on(idPlug, function(dp) { plug = dp.state.val; batt(); });
Script 2 und 3 Unterscheiden sich nur im abgefragten Datenpunkt in Zeile 1
-
Ich glaube bei Sonoff musst du auf POWER1 gehen damit er schaltet
-
Nö, schalten macht er ja korrekt.
Die beiden oberen Scripte funktionieren ja seit 2 Monaten.
Lediglich wenn ich den Akkustand aus dem Adapter hole anstatt direkt schaltet er so komisch das er bei 80% ausschaltet und dann anfängt alle paar Minuten kurz einzuschalten (ca. 30 Sekunden).
-
meine fresse machst du das komplizziert
aber egal
const idBatt = 'fullybrowser.0.192_168_8_225.Info.batteryLevel'; // Batterielevel in % const idPlug = 'sonoff.0.Ladestecker.POWER'; // Ladegerät ein const idVis = 'Vis.Batterieanzeige'; // Für Vis createState(idVis, 0, { type: 'number', min: 0, max: 7, role: 'level', states: { 0: 'leer', 1: '20 %', 2: '40 %', 3: '60 %', 4: '80 %', 5: 'voll', 6: 'Ladegerät' } }); var level = getState(idBatt).val; var plug = getState(idPlug).val; function batt() { var state = 5; // full 80 % if(level <= 79) state = 4; // 79 % if(level <= 60) state = 3; // 60 % if(level <= 40) state = 2; // 40 % if(level <= 30) state = 1; // 20 % if(level <= 22) state = 0; // empty 20 % if(plug) state = 6; // Ladegerät ein setState(idVis, state, true); if(level >= 80 && plug) { log('------------level ' + level + 'plug ' + plug); setState(idPlug, false); } if(level <= 30 && !plug) { log('------------level ' + level + 'plug ' + plug); setState(idPlug, true); } } batt(); // Skriptstart on(idBatt, function(dp) { level = dp.state.val; batt(); }); on(idPlug, function(dp) { plug = dp.state.val; batt(); });
lass mal laufen .. und schau was das Log sagt
-
Die Scripte waren so recht weit am Anfang als ich selbst versucht habe mir ein paar scripte zusammenzustellen.
Mangels Zeit kann ich das zwar heute auch noch nicht besser, aber es hat zumindest funktioniert.
Ich habe zwar mal versucht aus den beiden Scripten eines zu machen, aber das habe ich nie so richtig hinbekommen.
Andererseits hat es so funktioniert (ganz früher mit der Abfrage auf den PAW Adapter) und ich habe das dann einfach so belassen.
Zu deiner Lösung:
Aktuell bin ich auf 50% Akkustand. Ich lade jetzt manuell und werde mich dann melden wenn er bei den 80% ist wie er sich dann verhält.
Aber vorab schon mal herzlichsten Dank für deine Hilfe.
Ich denke mal wenn das Script läuft das das sowieso einige verwenden werden um eine passende Ladesteuerung zum Fully Adapter zu generieren.
-
bei 80% ausschaltet und dann anfängt alle paar Minuten kurz einzuschalten (ca. 30 Sekunden). `
Hast du schon die neueste Version des Adapters aus dem Git installiert? In der alten war genau der Fehler mit dem ein und ausschalten drin.
Nachtrag: Bei mir läuft es seit erscheinen der neuen Version perfekt. Schaltet ein und aus so wie es im Skript eingestellt ist.
const idBatt ='fullybrowser.0.10_122_60_62.Info.batteryLevel'; //Batterielevel in % const idPlug ='sonoff.0.Stube.POWER1';// Ladegerät ein const idVis ='Batterieanzeige'; //Für Vis createState(idVis, 0, { type: 'number', min: 0, max: 7, role: 'level', states: { 0: 'leer', 1: '20 %', 2: '40 %', 3: '60 %', 4: '80 %', 5: 'voll', 6: 'Ladegerät' } }); var level = getState(idBatt).val; var plug = getState(idPlug).val; function batt() { var state = 5; // full 80 % if(level <= 79) state = 4; // 79 % if(level <= 60) state = 3; // 60 % if(level <= 40) state = 2; // 40 % if(level <= 30) state = 1; // 20 % if(level <= 22) state = 0; // empty 20 % if(plug) state = 6; // Ladegerät ein setState(idVis, state, true); if(level >= 95 && plug) setState(idPlug, false); if(level <= 22 && !plug) setState(idPlug, true); } batt(); // Skriptstart on(idBatt, function(dp) { level = dp.state.val; batt(); }); on(idPlug, function(dp) { plug = dp.state.val; batt(); });
-
Ich bin auf Version 0.0.10
Das scheint die Aktuelle zu sein.
Die vorherigen Fehler mit der kurzzeitigen 0°C Eintragung sind ja weg. Nur eben jetzt bei mir diese seltsame Schaltverhalten bei vollem Akku.
-
Von github?
Ich hab die 0.0.9 von github geladen und seit dem gibt es diesen von dir beschriebenen fehler nicht mehr!
Mal komplett gelöscht den Adapter und neu installiert von github ?
-
Die 0.0.9 hatte doch den Fehler mit der kurzen 0% Eintragung.
Aktuell liegt doch schon der Nachfolger 0.0.10 auf Github.
-
Dann nimm mal das Skript mit dem Log, Dan siehst Du was los ist.
-
die 0.0.10 ist aktuell und auf git als auch auf npm
-
Das Script mit dem Log ist aktiv.
Akku ist erst bei 77%
Jetzt mal abwarten…..
-
spaaaaaaaaaaaaaaaaaaaaaaaaaaanuuuuuuuuuuuuuuuuuuuuuuuuuuuung
-
Und? Sag schnell
Ich muss den Grill an machen [emoji85][emoji6]
-
:?: :?: :?:
Ok,
Akku ist bei 80%
Wo schreibt er das Log hin?
Im ioBroker log sehe ich nichts obwohl er wieder munter schaltet.
Edit:
Bei 80% aus
- bei 79% an
Warum macht er das mit dem alten Script nicht?
-
Das Log sollte er doch ins Log vom iobroker schreiben, hätte ich angenommen.
-
Dachte ich eigentlich auch und habe es dort erwartet.
Aber da steht nichts.
Ich habe jetzt erst mal wieder die alte Version am Laufen und werde mich morgen weiter um das seltsame Verhalten kümmern.
Ich vermute mal das das mit meinem zweiten Script zusammenhängt in dem ich den Datenpunkt nur alle 10 Minuten schreibe.
-
im log muss eine oder mehrere Zeilen stehen die mit````
------------leveldas sieht man doch sofort