@paul53 Das sieht von der Beschreibung her gar nicht schlecht aus. Vor allem weil das über die Visu einstellbar ist. Nachdem ich raus gefunden habe, dass man auf das beta-Repo umschalten muss um das zu installieren, habe ich das gemacht. Hat nur nicht richtig geklappt. Timeouts und Fehler beim aufrufen der Admin-Seite und nix ging mehr richtig. Nachdem ich dann irgendwie wieder auf das normale Repo umgeschaltet habe, geht gar nix mehr. Der Browser meldet "ERR_CONNECTION_REFUSED", also der Webserver auf Port 8081 läuft nicht. Stoppen/Starten des iobroker über ssh hat nix gebracht. Muss jetzt erstmal schauen was im log steht.
NEWS
Latest posts made by silbaer
-
RE: Zeitsteuerung mit An/Aus Intervallen und manuellem override
-
RE: [GELÖST] - Temperatur soll Heizung (Smart Plug) regeln...
@matthias Ist eigentlich ganz einfach: Mein Script sieht z.B. so aus:
Alle Werte im Script kommen aus dem Alias-Zweig
Wenn jetzt irgendwas nicht funktioniert (oder auch bei der Entwicklung) kann ich die Alias-Datenpunkte auf interne Datenpunkte (userdata.*) umbiegen ohne dass ich am Script was ändern muss.
Achja: In der History landen auch die Aliaswert und nicht die vom Gerät direkt. -
RE: [GELÖST] - Temperatur soll Heizung (Smart Plug) regeln...
@matthias Kleiner Tipp: Ich habe mir angewöhnt alle Datenpunkte in Scripten über einen Alias anzusteuern. Das hat den Vorteil, dass man beim Testen einfach User-Datenpunkte nehmen kann die man dann manuell triggert. Das erleichtert das testen ungemein. Inzwischen mache ich das sogar mit user-Datenpunkten, damit ich alle relevaten Größen an einer Stelle habe.
Zweiter Debug-Tipp: Logausgaben. -
Zeitsteuerung mit An/Aus Intervallen und manuellem override
Moin!
Ich habe folgendes vor: Ich möchte meine Lüftungsanlage zeitgesteuert ein/ausschalten. Dabei soll es mehrere Ein/Aus-Intervalle pro Tag geben. Zusätzlich möchte ich einen Override haben: Immer an, immer aus, an/aus bis zum nächsten Intervall.
Am Ende möchte ich die Intervalle in einer Visu (habe ich mich noch gar nicht mit beschäftig) mindestens Anzeigen, besser noch ändern können.Die Idee ist, die An-Intervalle in einem Array zu speichern und mit Cron alle 5 Minuten (genauer braucht es nicht) zu schauen ob ein permaneter Override gesetzt ist. Wenn nicht prüfen ob die aktuelle Zeit in einem Intervall liegt und dann An zu schalten falls und ggf. den Override bis zum nächsten Intervall berücksichtigen (wie genau muss ich nochmal schauen).
Bin ich mit dem Vorgehen auf dem richtigen Weg oder gibt es andere/einfachere Vorschläge?
CU,
silbaer -
RE: Momentanverbrauch auf 0 setzen nach 1 min
@jschmied Ich mache etwas ähnliches mit dem Stromverbrauch. Da wird auch der aktuelle Zählerstand genommen. Immer wenn sich der ändert, nehme ich den aktuellen Wert und ziehe den Vorigen Zählerstand ab. Dann hole ich mir den Zeitstamp der letzten Änderung des vorigen Wertes und ziehe den von dem Timestamp des aktuellen Wertes ab. Dann speichere ich den aktuellen Wert als vorigen Wert. Mit den beiden Differenzwerten habe ich den "Momentan"-Verbrauch.
Bei dieser Art der Berechnung hast du immer das Problem, dass du nur in die Vergangenheit schauen kannst, d.h. den Zustand "kein Verbrauch" kannst du nicht zuverlässig feststellen.
Ich glaube ich würde an deiner Stelle das Script für den m³ counter so ändern, das nach einer gewissen Zeit der Wert auf jeden Fall aktualisiert wird. Dann kannst du oberes Shema verwenden um den Momentanverbrauch zu errechnen. Schlägt der Timer zu und der Wert hat sich nicht geändert ist die Differenz 0 und der Momentanverbrauch dann auch. Doof ist dann nur, das beim nächsten mal hochzählen wahrscheinlich ein zu hoher Momentanverbrauch angezeigt wird. Da musst du wahrscheinlich ein bisschen mit den Zeiten spielen.
-
RE: Tabellen-Adapter analog FLOT?
@homoran said in Tabellen-Adapter analog FLOT?:
@silbaer Erst mal vorweg: ich finde den Ansatz weiterhin "akademisch" interessant.
aber:
du bist der erste User der danach fragt. Und das bei 65.000 Usern und über 8+ Jahre.
da frage ich mich wie das denn bisher umgesetzt wurde.Das frage ich mich auch. Bzw. das werden alle per Script gelöst haben. Das sind zumindest die Ansätze die ich so gefunden habe. Ist ja nicht so, dass ich nicht vorher gesucht hätte...
Brauchen tut man so was nicht, aber für rapid prototyping ist so eine zusammenklick-Lösung natürlich nett. Und vielleicht für Leute die keine Zeit/Lust haben sich näher mit Scripten zu befassen. Rein mit Blockly wird eine Lösung schwierig (wenn überhaupt möglich), also muss man wieder javascript können...
Das bringt mich -hartnäckig (oder doch starrsinnig weil ich es nicht verstehe?) wie ich bin- zu der bereits früher gestellten Frage:
wenn du doch sowieso über ein Skript die Daten in einen Datenpunkt schreibst, warum formatierst du sie dabei nicht direkt in ein dir genehmes Format (z.B. Text, JSON oder HTML), so dass du es ähnlich wie ich nach deinem Gusto darstellen kannst.Das werde ich jetzt auch so machen. Ein Script das die von mir gewünschte Tabelle als JSON-Objekt enthält. Das skinning kann ich dann in der Visu machen. So jedenfalls der Plan.
Ich gebe zu, dass meine Anwendung viel Text enthält, bei dem es nichts zu extrapolieren gibt, allerdings auch Messwerte.
So wie ich dich verstanden habe wären das bei dir zum Ende des Ladevorgangs die entsprechenden Ladedaten, die dann per csv, JSON oder HTML als Tabellenzeile in den DP geschrieben würden.
Genau. Für die Visu als JSON-Objekt. Vielleicht will ich später noch was mit den Daten machen, da muss ich mal schauen ob man da sowas wie ein Exportscript machen kann. Oder wie @OliverIO vorgeschlagen hat eine "richtige" Datenbank. Dafür ist allerdings mein aktuell eingesetzter Raspi 2B mit 1MB ein kleines bisschen schwach denke ich... Ich bin am überlegen über kurz oder lang auf einen richtigen Rechner um zu steigen, aber momentan fehlt mir dazu noch so ein bisschen der Elan und Hardwareempfehlungen...
-
RE: Einbindung Shellys
@da_woody said in Einbindung Shellys:
@silbaer sorry, aber deine erklärungen sind teilweise verwirrend.
Ja, ganz ehrlich weiß ich auch nicht mehr was ich gemacht habe. Fakt ist aber: Am Anfang hatte ich nur den Shelly 1 am laufen über mqtt und setzen / lesen der Werte funktionierte.
Dann habe ich versucht den PM1 ein zu binden und das hatte am Anfang nicht geklappt, geht jetzt aber mit mqtt (lesen/schreiben). Aber beim Shelly 1 bekomme ich jetzt keine Werte mehr im iobroker angezeigt bzw. die entsprechen nicht den Werten im Shelly. Aber schreiben geht. Dabei spielt es keine Rolle ob ich mqtt oder CoAP benutze.
allerdings, meine gen1 spielen alle über COaP...
Gibt es einen Grund das eine Protokoll dem anderen vor zu ziehen?
-
RE: Einbindung Shellys
@da_woody said in Einbindung Shellys:
@silbaer sagte in Einbindung Shellys:
Copy/Paste der mqtt Einstellungen
sicher, daß da nicht eine leerstelle mit kopiert wurde?
Ja. Ich habe die Einstellungen vom Shelly 1 in den Shelly 1PM kopiert. Danach habe ich auch den Shelly 1PM per mqtt erreicht. Vorher nicht.
Im Log sehe ich auch, dass die beiden Shellys sich anmelden. Setzen von Werten geht ja auch bei beiden, nur das Lesen scheint beim Shelly 1 nicht (mehr) zu funktionieren. FW-Update habe ich auch gemacht. Eigentlich fehlt nur noch ein Factory-Reset...
Ich weiß halt nicht ob es am Shelly liegt oder ob am ioBroker. -
RE: Tabellen-Adapter analog FLOT?
@homoran said in Tabellen-Adapter analog FLOT?:
Interpolation von bool oder string wird bestimmt lustig
Kannst du dir in Flot ja jetzt schon anschauen
Davon abgesehen geht "Schritte" aka "letzter Wert" in einer Tabelle immer -
RE: Tabellen-Adapter analog FLOT?
@homoran said in Tabellen-Adapter analog FLOT?:
@silbaer sagte in Tabellen-Adapter analog FLOT?:
Im Grunde ist in Flot alles schon da: Auswahl der Datenpunkte, Berechnung/Interpolieren der Werte zwischen den Werten eines Datenpunktes
Jein!
Mit Interpolation meinst du wahrscheinlich die Aggregation.Nein. Ich meine schlicht und ergreifend wie die einzelnen Messpunkte im Grafen verbunden werden. Das wird mit Chart Type eingestellt. Lies mal hier https://www.iobroker.net/docu/index-195.htm?page_id=198&lang=de#Datenpunktparameter
Linie: Die Daten werden als Linien dargestellt. Die einzelnen Punkte werden als Gerade miteinander verbunden.
Bar: Jeder einzelne Messpunkt der Daten wird als vertikaler Balken dargestellt. Diese Darstellung empfiehlt sich nur bei wenigen Messpunkten.
Scatter plot: Die Daten werden als isolierte Punkte dargestellt. Die einzelnen Punkte werden nicht miteinander verbunden.
Schritte: Die Daten werden als Linien dargestellt. Die einzelnen Punkte werden bis zur nächsten Änderung horizontal als Gerade miteinander verbunden. Zum Zeitpunkt der Änderung wird eine Stufe eingelegt.
Spline: Die Daten werden als Linien dargestellt. Die einzelnen Punkte werden als gebogene Kurve miteinander verbunden.@homoran said in Tabellen-Adapter analog FLOT?:
Ob das auch bei Tabellen einsetzbar ist weiß ich schlicht unf ergreifend nicht.
aber ich sehe hier noch ein "Problem":
@silbaer sagte in Tabellen-Adapter analog FLOT?:
Wie du schon richtig erkannt hast, werden die Datenpunkte nicht den selben Timestamp haben. Deswegen soll ja ein DP als "Trigger" fungieren, so dass für jeden Wert dieses Datenpunktes eine Zeile in der Tabelle erzeugt wird.
klingt einfach, aber ob es das ist weiß ich auch nicht.
Doch ist es. Du hast doch geschlossene Kurven in Flot, oder? Was meinst du wie die Punkte dazwischen gezeichnet werden?
in Flot wird jede Kurve durch ihre Messpunkte gezogen, egal ob die Timestamps übereinpassen oder nicht. Ist ha auch egal, da die Punkte durch Linien (egal welcher Art) verbunden werden.
Richtig. P1(x,y) und P2(x,y) repräsentieren zwei Punkte im Grafen. Für jeden diskreten Wert P'(x) zwischen P1(x) und P2(x) wird je nach Chart Type ein P'(y) berechnet. Ob x und y nun Pixel oder Timestamp/Wert Paare sind ist egal. Die Berechnung ist die selbe nur mit anderen Zahlenwerten. Und genau das mach Flot ja.
gibt es jetzt Datenreihen bei denen die Daten wesentlich seltener aufgezeichnet werden muss in history eingestellt werden, wie oft der selbe Wert wiederholt gespeichert werden soll, damit die Linie noch sichtbar bleibt. Liegen nämlich im Bereich des Grafen nicht mindestens zwei historisierte Punkte ist es aus mit der Kurve.
Wie soll jetzt in einer Tabelle mit solchen seltenen Werten umgegangen werden?
Richtig. Da gäbe es verschiedene Strategien. Von "Kein Wert" bis hin zu "gehe zeitlich so weit zurück (oder vor) bis du einen Wert findest". Beides geht ohne das in history irgendwelche Einstellungen geändert werden müssen, wobei die letzte Option die sinnvollere ist. Letzteres müsste in history auch eine billige Aktion sein wenn ich das richtig verstanden habe wie da die Datenhaltung funktioniert. In SQL auch (mit Index auf timestamp), und in InFlux sowieso.
extrapoliert hieße es wird in einer Zeile der Wert eingetragen. Die Vervielfältigung analog Flot für "alle" Zeilen müsste passend zum kürzesten Intervall in History geschehen.
Nein. Wenn du mit "Intervall" ein regelmäßiges zeitliches Intervall meinst: Das ist nicht nötig. Siehe oben. Für jede Zeile müsste für jeden zusätzlichen Datenpunkt genau ein Wert interpoliert werden. Nimmt man Chart Type "Schritte" aka "letzter Wert" ist das ein einfaches Nachschlagen in der Werteliste, nimmt man Chart Type "Linie" ist das ein einfacher Dreisatz: P'(y) = ( (P'(x)-P1(x)) / (P2(x)-P1(x)) * (P2(y)-P1(y)) + P1(y)
Aber wie gesagt: Die ganze Funktionalität ist schon in Flot enthalten.