Startseite Foren Fibaro Forum (Z-Wave) Fibaro LUA Scripts für HC2 Energie und Kostenberechnung

Dieses Thema enthält 64 Antworten und 9 Teilnehmer. Es wurde zuletzt aktualisiert von  LSt vor 3 Monate, 3 Wochen.

Ansicht von 15 Beiträgen - 1 bis 15 (von insgesamt 65)
  • Autor
    Beiträge
  • #78479
    pblacky
    pblacky
    Teilnehmer

    Hi,
    Ich habe mir ein kleines Skript gebastelt, welches den Energieverbrauch und die Kosten eines Gerätes berechnet.
    Dieses funktioniert in der V0.1 schon ganz brauchbar:

    #78481
    pblacky
    pblacky
    Teilnehmer

    Jetzt würde ich gerne, dass ich mehrere IDs eintragen kann um in späterer Folge dann einen monatlichen Report der wichtigsten Geräte per Email zu bekommen.
    Leider scheitere ich derzeit an der Erweiterung der Device IDs in ein Array:
    Meine V0.2 des Skriptes bringt immer den Fehler [DEBUG] 02:58:09: line 91: Unclosed elements present
    Hier das SKript, vielleicht habt ihr ja einen Tipp oder es gibt ein Beispiel irgendwo, das ich noch nicht gefunden hab !?

    #78513
    Hoggle
    Hoggle
    Moderator

    Deine Variable in Zeile 4 und 9 sind nicht gleich.


    Immer hilfreich: Siio-Datenbank
    #78521
    pblacky
    pblacky
    Teilnehmer

    Stimmt, danke Hoggle!
    Habe nun die Zeile 4 geändert auf local IDs = {334,87}
    Zusätzlich noch Zeile 25 auf CheckVBR(IDs)

    Leider hat sich am Fehler nichts geändern ;-(
    Habe ich deinen Tipp richtig umgesetzt, oder hab ich da was missverstanden?

    Ist es eigentlich gut die Function function energieverbrauch() als Unterfunktion der function CheckVBR(IDs) einzubauen, oder könnte man die auch außerhalb ansiedeln?
    Sorry aber mit den Funktionen hab ich’s noch nicht so 100% ig ;-)

    • Diese Antwort wurde geändert vor 1 Jahr, 7 Monate von pblacky pblacky.
    #78535
    Hoggle
    Hoggle
    Moderator

    In Zeile 25 und 8 brauchst du keine ID zwischen den Klammern.

    Da ich kein Programmierer bin – versuche es mit Debugs bezüglich der Frage nach den Funktionen – ich würde sagen: egal….


    Immer hilfreich: Siio-Datenbank
    #78537

    boomx
    Teilnehmer

    1. Die erste Anpassung hättest du nicht vornehmen müssen. Der Funktion ist es egal, wie der Übergabeparameter ursprünglich heißt.

    2. Dann sind natürlich die Funktionsaufrufe mit dem Übergabeparameter notwendig. Wenn du die Namen anpasst, dann nicht mehr.

    3. Der Funktion ist es egal wo sie definiert wird. Muss halt nur vor der Ausführung passieren, da das Skript von oben nach unten durchläuft.

    Gruß

    #78552
    pblacky
    pblacky
    Teilnehmer

    So nun habe ich den Code so angepasst wie ich es verstanden hab.
    Habe die Json Zeile vorerst auskommentiert und weitere Debugs hinzugefügt, jetzt läuft das skript zumindest mal OHNE Fehler durch.
    Und ich habe eine Spur!

    Der Debug in Zeile 23 (siehe unten) gibt mir in der Variable „DeviceID“ eine fortlaufende Nummer (0,1) statt der ID des Gerätes!
    Vermutlich ist das der Fehler, aber ich verstehe nicht was ich falsch hab. GENAU der selbe Befehl wie in Zeile 16 befüllt in einem anderen Skript die Variable mit dem richtigen Wert, der ID des Gerätes?!
    Ich fürchte ich steh gerade voll auf dem Schlauch ;-(

    • Diese Antwort wurde geändert vor 1 Jahr, 7 Monate von pblacky pblacky.
    • Diese Antwort wurde geändert vor 1 Jahr, 7 Monate von pblacky pblacky.
    #78560

    boomx
    Teilnehmer

    In die DeviceID schreibst du den Value. Deshalb 0,1. Die ID wäre IDs[i].

    Gruß

    #78570
    pblacky
    pblacky
    Teilnehmer

    Hallo Boomx,
    Kannst du mir eventuell bei dieser Zeile einen konkreteren Tipp geben?
    Die Schleifen überfordern mich leider noch etwas ;-)

    Habe folgendes in Zeile 16 probiert:
    DeviceID = fibaro:getValue(IDs[i])
    -> [DEBUG] 07:15:14: line 115: attempt to concatenate local ‚propertyName‘ (a nil value)

    DeviceID = fibaro:getValue(IDs[i],IDs[i])
    -> [DEBUG] 07:17:57: line 23: attempt to concatenate global ‚DeviceID‘ (a nil value)

    DeviceID = tonumber(fibaro:getValue(IDs[i],IDs[i]))
    -> [DEBUG] 07:17:57: line 23: attempt to concatenate global ‚DeviceID‘ (a nil value)

    DeviceID = tonumber(fibaro:getValue(IDs[i]))
    [DEBUG] 07:21:58: line 115: attempt to concatenate local ‚propertyName‘ (a nil value)

    #78572

    boomx
    Teilnehmer

    Warum willst du dort den Zustand auslesen? Du willst doch die DeviceID und die steht wie oben beschrieben in der Variablen IDs[i]. Lass einfach das getValue weg, eine Fibaro-Funktion hat dort nichts zu suchen!!!

    Gruß

    #78575
    pblacky
    pblacky
    Teilnehmer

    Ich bin so betriebsblind, SORRY !!!!!!
    Danke, jetzt klappt auch die JSON Abfrage.

    Nächster Schritt, das alles in ein hübsches Email zu verpacken und 1 x im Monat zu verschicken,
    das habe ich hier schon irgendwo gesehen, das schaff ich hoffentlich ohne euch zu quälen ;-)

    Wenn es fertig ist, werde ich es hier posten….

    #78602

    jeep
    Teilnehmer

    Die Variable sek sieht für mich noch ein wenig gequält aus. Ich denke Du willst die Sekunden in einem Monat ausgeben und mit der Anzahl der Monate (mon) multplizieren.
    Das math.floor() brauchst Du nicht, sind ja alles Ganzzahlen. Ein Tag hat 86400 Sekunden x 30 Tage x mon.
    Also sek = mon*30*86400. Wenn ich es richtig gedeutet habe. ;-)


    Grüße, Jeep
    #78610
    pblacky
    pblacky
    Teilnehmer

    Stimmt Jeep, danke für den Tipp, habs gerade eingebaut!
    Die Email Funktionalität für mein Skript werd ich mir von deinem Baterieskript abschauen, wenn das erlaubt ist ;-)

    Zwischenzeitlich habe ich mal alle nötigen Geräte eingefügt um die Verbrauchswerte auf plausibilität zu testen.
    Läuft alles sehr gut, bis auf einen Tifekühler im Keller der angeblich im Monat 4300 kWh verbraucht.
    Habe mir die Verbrauchskurven angesehen und einen ausrutscher für einige Sekunden auf 28 MegaWatt entdeckt (siehe Anhang), die das Ding niemals verbraucht haben kann ;-)
    Bekomm ich das aus der Statistik irgendwie weg, oder muss ich die Werte komplett aus dem plug löschen, damit ich eine klare Langzeitbewertung bekomme?

    Dateianhänge:
    You must be logged in to view attached files.
    #78879
    pblacky
    pblacky
    Teilnehmer

    Hi Leute,
    Habe jetzt mal ein kleines knackiges Skript gebaut, welches die Verbrauchswerte von bestimmten ID’s ausliest und als Debugg ausgibt.
    Läuft schon mal ganz gut!

    #78881
    pblacky
    pblacky
    Teilnehmer

    Jetzt hab ich versucht in meinem Skript die Informationen die im Debug Fenster angezeigt werden zeilenweise in eine Variable zu bekommen um dann die gesamte Liste als Email zuversenden. Leider klappt das mit dem Anfügen nicht wirklich ;-(
    Habe mir auch das Batteriecheck Skript von jeep angesehen, und dorr versucht abzukupfern, leider ohne Erfolg.
    Habt ihr einen Tipp wie ich das machen kann?
    Das bringt immer einen Fehler „unexpected symbol near =….“

Ansicht von 15 Beiträgen - 1 bis 15 (von insgesamt 65)

Du musst angemeldet sein, um auf dieses Thema antworten zu können.