NEWS
Test Adapter Rain Bird v0.1.x GitHub
-
@myssv Was würden dir die Minuten bringen? Verstehe es gerade noch nicht ganz.
-
Ich stelle die Laufzeit in Minuten ein:
Und würde gerne wenn die Bewässerung läuft, den Slider ausblenden und an gleicher Stelle den Restlaufzeit-Slider einblenden:
Das sind aber unterschiedliche Einheiten. Außerdem wird die Restlaufzeit nur alle 20 Sekunden aktualisiert, so dass die Sekunden nur springen und nicht sauber runter zählen.
Rein optische Kosmetik!
-
@myssv Ich mache mir das via Hilfsscript, weil der Controller die Zeit immer in Sekunden liefert. Ich weiß nicht, ob es sinnvoll wäre, das direkt im Adapter zu integrieren, da jeder User die Daten anders verarbeiten will. Was ich noch vorhabe, ist, die Restlaufzeit intern im Adapter feinkörniger runterzuzählen. Unabhängig von der Polling-Time.
In meinem Fall sieht das Skript so aus:
if(existsState('javascript.0.vis.rainbird.remaining_1') === false) { createState('vis.rainbird.remaining_1', '', {name: 'Restlaufzeit Station 1', unit: '', type: 'string', role: 'text', def: ''}); } if(existsState('javascript.0.vis.rainbird.remaining_2') === false) { createState('vis.rainbird.remaining_2', '', {name: 'Restlaufzeit Station 2', unit: '', type: 'string', role: 'text', def: ''}); } if(existsState('javascript.0.vis.rainbird.remaining_3') === false) { createState('vis.rainbird.remaining_3', '', {name: 'Restlaufzeit Station 3', unit: '', type: 'string', role: 'text', def: ''}); } if(existsState('javascript.0.vis.rainbird.remaining_4') === false) { createState('vis.rainbird.remaining_4', '', {name: 'Restlaufzeit Station 4', unit: '', type: 'string', role: 'text', def: ''}); } on({id: ['rainbird.0.device.stations.1.remaining', 'rainbird.0.device.stations.2.remaining', 'rainbird.0.device.stations.3.remaining', 'rainbird.0.device.stations.4.remaining'], change: 'any'}, function(obj) { if(obj.state.ack !== true) { return; } let id = 'remaining_1'; if(obj.id === 'rainbird.0.device.stations.2.remaining') { id = 'remaining_2' } else if(obj.id === 'rainbird.0.device.stations.3.remaining') { id = 'remaining_3' } else if(obj.id === 'rainbird.0.device.stations.4.remaining') { id = 'remaining_4' } let minutes = Math.floor(obj.state.val / 60); let seconds = obj.state.val - (minutes * 60); setState('javascript.0.vis.rainbird.' + id, minutes + ':' + (seconds < 10 ? '0' : '') + seconds, true); });
-
OK, das könnte ich mir umbauen.
Auf 6 Stationen habe ich es schon erweitert, aber wie definiere ich die Variablen als Zahlen?
Ich würde dann dort nur die Minuten rein schreiben und könnte dann den Slider auf diesen Datenpunkt aufsetzen und hätte meinen Wunsch erfüllt.
-
@myssv sagte in Test Adapter Rain Bird v0.1.x GitHub:
OK, das könnte ich mir umbauen.
Auf 6 Stationen habe ich es schon erweitert, aber wie definiere ich die Variablen als Zahlen?
Ich würde dann dort nur die Minuten rein schreiben und könnte dann den Slider auf diesen Datenpunkt aufsetzen und hätte meinen Wunsch erfüllt.
also statt
createState('vis.rainbird.remaining_4', '', {name: 'Restlaufzeit Station 4', unit: '', type: 'string', role: 'text', def: ''});
dann
createState('vis.rainbird.remaining_4', 0, {name: 'Restlaufzeit Station 4', unit: 'min', type: 'number', role: 'value', def: 0});
-
Danke!!
Ist jetzt genauso, wie ich es mir gewünscht habe!!
-
@myssv Die neue r36 hat nun sekundengenaue Restzeit. Ist gerade im Git gelandet.
-
@StrathCole sagte in Test Adapter Rain Bird v0.1.x GitHub:
Die neue r36 hat nun sekundengenaue Restzeit. Ist gerade im Git gelandet.
Funktioniert auch bei mir, aber mir reichen die Minuten.
-
Kurze Frage. Der Adapter startet bei mir permanent neu. Läuft auf nem Pi in einem Dockercontainer. Log hänge ich mal dran. Liegt es an der Installation auf einem Container? iobroker.2020-04-14.log.html
Ich hab gerade auf einer anderen Installation geguckt - normal auf nem PI - gleiches Problem.
-
@Martin-Rodewald Scheinbar kann sich dein Docker-Container nicht nach außen zu der IP des Rain Bird verbinden und steigt daher mit einem Fehler aus.
Probier mal, vom Container bzw der selben Ebene wie der Installation aus, ein "wget http://xxxxxxxx" auf die ip vom Rain Bird zu machen. Ich denke, das wird auch nicht funktionieren.
-
@Martin-Rodewald Du könntest mal die aktuellste r37 aus dem Git installieren. Da habe ich eine Sicherheitsabfrage an der Stelle drin.
-
Probiert. gleicher Fehler - siehe Log. Ein wget auf die IP geht nicht. Schalten kann ich über deinen Adapter die Anlage allerdings. Muss nur den Moment abpassen, wenn er sich nicht neu startet. Log ist bei _neuiobroker.2020-04-14.log.html
Achso Anpingen der IP geht. Wget sagt, auf Port 80 nicht erreicht
-
Zur Info: Bei mir läuft ioBroker auch in einem Docker-Container auf einer Synology Disk-Station.
Es sollte also grundsätzlich aus einem Docker-Container funktionieren.
-
@Martin-Rodewald Ich habe r38 ins Git geschoben. Dein Problem scheint zu sein, dass du auf den RainBird noch parallel mit anderen Diensten zugreifst. Das führt dann zu dem Fehler 503, weil der Controller immer nur eine Verbindung parallel zulässt. Je nach Status des Adapters führt dieser Zugriffsfehler dann zu einer ungültigen Antwort, die den Adapter abschießt. Das habe ich nun versucht abzufangen.
-
Vielen Dank @StrathCole läuft jetzt ohne Fehler! Vielen Dank für deine schnelle Hilfe!
-
@Martin-Rodewald Super. Du solltest aber dennoch drauf achten, dass möglichst keine anderen Apps oder Geräte zeitgleich drauf zugreifen, da du sonst häufiger "Fehler 503" bekommen wirst und ggf. einige Datenpunkte nicht aktuell sind.
-
Ich habe heute Morgen auf die 0.2.2 aktualisiert und nun funktioniert es nicht mehr. Es werden keine Sekunden mehr angezeigt ?!?!?
remaining_x bleibt auf 0 und auch die Restlaufzeit bei den Stationen steht auf 0.
-
@myssv Schaue ich mir an.
-
@myssv Komisch, bei mir passt noch alles. Hast du mal ins Log geschaut, ob da alles passt?
-
Ja, da sieht alles sauber aus: