@xxjooo sagte in [gel.] Werte aus influxdb2 holen und in anderen DP schreiben:
Vielleicht hast Du einen Tipp, was Du anders machen würdest?
Ja, habe/hatte ich :
@marc-berg sagte in [gel.] Werte aus influxdb2 holen und in anderen DP schreiben:
grundsätzlich könnte man das Ergebnis auch mit einer reinen FLUX Query erreichen, ohne Script
Hier mal ein Beispiel, musst du nur noch den Filter anpassen, der die die "bösen" Werte rauswirft:
influx query 'from(bucket:"iobroker")
|> range(start:-10y)
|> filter(fn: (r) => r._measurement == "0_userdata.0.Wetterstation.Wind_max" and r._value <= 100)
|> set(key: "_measurement", value: "0_userdata.0.Wetterstation.Wind_max_clean")
|> to(bucket: "iobroker")'
Ich bekomme neuerdings beim Start des Skripts folgende Warnung:
"script.js.common.Licht.Lightcontrol: More than 100 subscriptions registered. Check your script!"
Hat jemand eine Idee was da genau bemängelt wird?
@marc-berg,
also manche Probleme sind vielleicht mit dem Geist der Elektronen erklärbar...
Nachdem ich es jetzt noch ein paar Mal mit immer dem gleichen Ergebnis probiert habe, habe ich der gesamten Proxmox-Maschine ihre Updates verpasst und alles neu gestartet - obwohl ich das einmal im Monat mache.
Und siehe, das Skript löscht jetzt die Daten wie gewünscht, der DP ist leer. Und auch vorher angezeigte Fehler im Log sind nicht mehr da.
Setze das auf gelöst.
Vielen Dank und Grüße
Es geht mir darum, dass man die Finger vom "Erben" von einer Klasse lassen sollte, die als Singleton designt ist ...
Wenn man eine Singleton-Klasse designt hat, die Rechtecke und Kreise verwalten soll, und man ein Klasse braucht, die nur die Rechtecke verwaltet, sollte sie das Singleton-Objekt referenzieren, und sich dessen Methoden bedienen, aber nicht von ihr abgeleitet sein ...
@xenon sagte in settimeout() id an obj binden [gelöst]:
Wie gesagt, ich habe es mittlerweile hinbekommen
Auch vor dem Wissen, dass dieser Thread nun fast 4 Jahre alt ist, wie sieht denn deine Lösung für dieses Problem aus?
Ich stehe aktuell vor genau derselben Problematik und wäre über eine Lösung dankbar.
@bananajoe habe ich nun umgesetzt, gefällt mir sehr gut mit dem Widget 8!
Wenn man die Vis schon neu baut soll es ja klappen und gefallen ;-)
Meinen Herzlichen Dank nochmal für die Hilfe an dich
@paul53 sagte in existsStateAsync liefert false negative:
Erstelle Issue auf Github.
Schon dabei. Dann löse ich Thread mal als gelöst. Vielen Dank für deine Hilfe.
@ingo-2 sagte in Instanz "Javascript" funktioniert nicht mehr:
Habe den Pfad der Skripte mal geändert und auf einmal funktioniert es! Also von "Globale Skripte" auf "Allgemeine Skripte".
Globale Scripts sind ja auch eine Sonderlocke und nur für Experten gedacht. Das sind keine eigenständigen Scripts, sondern der Inhalt der Scripts wird quasi vor jedes andere Script "kopiert". Der Ordner sollte generell nur im Expertenmodus sichtbar sein (aus Gründen).
Am besten: Einfach nicht verwenden :)
@hydro21 sagte: Variable TimeWMan auf nicht null überprüfen?
Das kann man auch.
if (value >= 45) {
if (TimeWMan) {
clearTimeout(TimeWMan);
TimeWMan = null;
}
} else if (!TimeWMan) {
TimeWMan = setTimeout(FUWMistaus, 300000); //Verzögerungszeit von 5 Minuten
}
});
@paul53
vielen Dank, es funktioniert!
@BananaJoe
habe eine Steuerung von Dr. Eugen Stall. Die in meine Homematic eingebunden ist. Verlagere langsam die Homematic- Funktionen Richtung IO Broker. Die Steuerung ist wirklich ihr Geld wert
Wifi Pump
Vielen lieben Dank nochmals an für eure Unterstützung
@homoran
OK, dann hat der Scheduler damit ein Problem ...
Keine Ahnugn ob das ein node Modul ist, ein npm Modul eines anderen Entwicklers oder ioB Eigenbau. Dementsprechend ev. an der passenden Stelle ein Issue anlegen.
@paul53 Vielen vielen Dank für die Hilfe, es funktioniert perfekt! :)
Falls sowas für jemanden noch einmal interessant werden sollte: hier sind ein paar Zeilen aus meine Pythonskript, wie das Array eingelesen wird.
import sys
import json
#sys.argv[0] ist der pfad vom Skript das aufgerufen wird
#hier werden die Daten aus dem von IOBroker beim Skriptaufruf uebergebenem Array in der Variable IOBrokerdata gespeichert
IOBrokerdata = sys.argv[1]
#um ein json array in python verarbeiten zu koennen muss es mit der json.loads() Methode bearbeitet werden
Kanal_Status = json.loads(IOBrokerdata)
#ueber Kanal_Status [0] bis [7] kann dann auf den jeweiligen Status zugegriffen werden
#hier 0 bis 7 weil 8 Werte uebergeben wurden
#Ein Beispiel wie der erste Wert aus dem Array benutzt werden kann
if Status[0] == True:
do something
if Status[0] == False:
do something else
@paul53
Ja, ich hatte an ein Intervall gedacht, denn gelegentlich wird der Befehl auf meinem GPIO (Hardware) nicht umgesetzt. Im IoBroker wird zwar angezeigt, dass beispielsweise TRUE sein sollte, aber in der Hardware bleibt es weiterhin auf 0 bzw. FALSE
@wildbill
Hallo Jürgen,
vielen Dank für die Erklärung.
Ich habe den Fehler in genau diesem Script entdeckt. Es war ein fehlerhaftes Klammergebirge. Die Fehlermeldungen waren aber auch für mich etwas verwirrend.
Vielen Dank nochmals für den richtigen Anstoß.
Grüße Roland