Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. SpacerX

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    S
    • Profile
    • Following 0
    • Followers 1
    • Topics 13
    • Posts 536
    • Best 84
    • Groups 1

    SpacerX

    @SpacerX

    102
    Reputation
    59
    Profile views
    536
    Posts
    1
    Followers
    0
    Following
    Joined Last Online

    SpacerX Follow
    Starter

    Best posts made by SpacerX

    • InfluxDB 2.0 Measurement löschen

      Ich möchte mal mein Vorgehen zum Löschen von Datenreihen in InfluxDB 2.0 beschreiben. Vielleicht kann es jemand gebrauchen der wie ich nur Erklärungen für InfluxDB < 2.0 gefunden hat.

      Auf jeden muss man als erstes das Aufzeichnen des Datenpunktes in ioBroker deaktivieren. Wenn eine ID vergeben wurde diese als Measurement Bezeichner nutzen.

      Los geht's:
      Eine Konsole auf der Installation öffnen auf der sich InfluxDB 2.0 befindet.

      Um nicht ständig den Token und die Organisation bei den Befehlen eingeben zu müssen hab ich eine config dafür erzeugt.

      Den Token findet man in InfluxDB unter "Data - API Tokens". Die Datenbank auswählen, bei mir heißt sie ioBroker. Im sich öffnenden Fenster steht oben der Token. Dann einfach Copy to Clipboard geklickt dann kann man sie einfacher in der Konsole einsetzen.

      InfluxDate schreibt dazu:

      influx config create --config-name <config-name> \
      --host-url http://localhost:8086 \
      --org <your-org> \
      --token <your-api-token> \
      --active

      Das nun angepasst in der Konsole eingegeben.

      spacerx@InfluxDB-Grafana:~$ influx config create --config-name spacerx --host-url http://localhost:8086 --org RBE --token abcdefghijklmnop123456789 --active
      

      Nun der Befehl um den Eintrag komplett zu löschen.
      InfluxDate schreibt dazu:

      influx delete \
      --bucket example-bucket \
      --start 1970-01-01T00:00:00Z \
      --stop $(date +"%Y-%m-%dT%H:%M:%SZ") \
      --predicate '_measurement="example-measurement"'

      Das angepasst auf meine Datenbank und die ID des Datenpunktes in der Konsole eingegeben.

      spacerx@InfluxDB-Grafana:~$ influx delete --bucket ioBroker --start 1970-01-01T00:00:00Z --stop $(date +"%Y-%m-%dT%H:%M:%SZ") --predicate '_measurement="ID-Datenpunkt"'
      

      Schwups nun ist ID-Datenpunkt aus InfluxDB verschwunden.

      posted in InfluxDB
      S
      SpacerX
    • RE: Datenaufzeichnung Retention InfluxDB 2.0

      Ich schiebe noch paar Überlegungen nach:

      • Downsampling um 00:15 Uhr Nachts. Einmal am Tag reicht denke ich die aktuellen Daten für die Visu bekomme ich ja aus dem Quellbucket.

      • Gleich auch die Spalten "ack", "q", "from" mit entfernen. Ich glaube nicht das man die jemals wieder braucht.

      import "timezone"
      
      option task = {name: "Downsampling Vb_Stromzaehler", cron: "15 0 * * *"}
      
      option location = timezone.location(name: "Europe/Berlin")
      
      data =
          from(bucket: "ioBroker")
              |> range(start: -2mo, stop: now())
              |> filter(fn: (r) => r["_measurement"] == "Vb_Stromzaehler")
              |> filter(fn: (r) => r["from"] == "system.adapter.javascript.0")
              // Spalten "_start", "_stop", "ack", "from", "q", ausschliessen
              |> drop(columns: ["ack", "q", "from"])
      
      data
          |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start")
          // In Wh ohne Komma
          |> toInt()
          |> set(key: "_measurement", value: "Hauptzaehler") 
          // Use the to() function to validate that the results look correct. This is optional.
          |> to(bucket: "Stromverbrauch", org: "RBE")
      

      Wichtig ist das der drop Befehl in dem oberen data Block steht, ansonsten wird ein Fehler angemeckert.

      Die beste und korrekte Darstellung in Grafana ergibt sich mit:

      import "timezone" // import wegen der Berechnung um 02:00:00
      option location = timezone.location(name: "Europe/Berlin")
      from(bucket: "Stromverbrauch")
        |> range(start: -1y, stop: now())
        |> filter(fn: (r) => r["_measurement"] == "Hauptzaehler")
        |> aggregateWindow(every: 1mo , fn: last,  timeSrc: "_start") // ,createEmpty: false )
        |> difference()
      

      SnipSnap_1.PNG
      Die Anpassung der X-Bezeichnung mit Override
      SnipSnap_2.PNG
      Vieleicht sucht das ja mal jemand und kann es hier finden.😊

      posted in InfluxDB
      S
      SpacerX
    • RE: Grafana - InfluxDB 2 - Tageswert wird Folgetag zugeordnet

      @cocomp das utc korrigiert man idealer Weise so.

      import "timezone"
      option location = timezone.location(name: "Europe/Berlin")
      
      posted in Off Topic
      S
      SpacerX
    • RE: [Gelöst] MQTT und Shelly Adapter

      @noidea für Shelly MQTT brauchst du nur einen der Adapter. Entweder den Shelly oder den MQTT Adapter.
      Nimm den Shelly Adapter und ließ die Doku zum Adapter auf GitHub. Dort ist alles beschrieben wie MQTT eingestellt wird.

      posted in Hardware
      S
      SpacerX
    • RE: Shelly 1 pm, Influx und Grafana Logging Unterbrechung

      @crunchip
      In deinem gepostetem Script fehlt unten eine Zeile mit dem Cronjob für den täglichen, wöchentlichen und monatlichen Übertrag. Wenn der TE das so benutzt kann’s nicht funktionieren.

      posted in Blockly
      S
      SpacerX
    • RE: Shelly Einsteiger Fragen oder alternative?

      @wendy2702 die Doku zum Shelly-Adapter auf GitHub beantwortet 95% aller Fragen. 😊

      posted in Hardware
      S
      SpacerX
    • Blockly InfluxDB2.0 Flux Abfrage

      Hallo zusammen,

      mir ging es darum den niedrigsten Preis der letzten 14 Tage zu ermitteln.

      Ich habe mit Hilfe der Suche nichts konkretes gefunden wie man mit Blockly einen Wert aus der InfluxDB Datenbank bekommen kann. So hab ich selber gefummelt.
      Was dabei raus gekommen ist möchte ich mit euch teilen, vielleicht kann jemand das ein oder andere Schnipsel gebrauchen.

      SnipSnap_1.PNG

      <xml xmlns="https://developers.google.com/blockly/xml">
       <variables>
         <variable id=":)VLwK/`@H+J(LM#$WD7">flux</variable>
         <variable id=".5z}V1WTXA6xD^rmM@W4">preis</variable>
         <variable id="Hap*,T)oNQNM[M8bZeb7">result</variable>
         <variable id="19e+]})FfXk}~`Wj.4bM">htmlString</variable>
       </variables>
       <block type="schedule" id="n=UEN2;yjIT1`l#FdcV_" x="-762" y="-1037">
         <field name="SCHEDULE">*/60 * * * *</field>
         <statement name="STATEMENT">
           <block type="variables_set" id="x45T#QqEweP.8DbaXVqx">
             <field name="VAR" id=":)VLwK/`@H+J(LM#$WD7">flux</field>
             <value name="VALUE">
               <block type="text_join" id="o9Vd,Q~U,{!3is[fPCf.">
                 <mutation items="7"></mutation>
                 <value name="ADD0">
                   <block type="text" id="?I]TaO6_Vbp6gDEIQkdm">
                     <field name="TEXT">from(bucket: "ioBroker")</field>
                   </block>
                 </value>
                 <value name="ADD1">
                   <block type="text" id="yj4=}t)xOExa-Vb!lRg5">
                     <field name="TEXT"> |&gt; range(start: -14d, stop: now())</field>
                   </block>
                 </value>
                 <value name="ADD2">
                   <block type="text" id="$wF;t#c|U7%H4c3VEjr-">
                     <field name="TEXT"> |&gt; filter(fn: (r) =&gt; r["_measurement"] == "DP_Guenstigste")</field>
                   </block>
                 </value>
                 <value name="ADD3">
                   <block type="text" id="T7*$6*6|Y::w)O)CnG}m">
                     <field name="TEXT"> |&gt; filter(fn: (r) =&gt; r["_field"] == "value")</field>
                   </block>
                 </value>
                 <value name="ADD4">
                   <block type="text" id="$K[IvM%br(mA/cThGg80">
                     <field name="TEXT"> |&gt; filter(fn: (r) =&gt; r._value &gt; 0)</field>
                   </block>
                 </value>
                 <value name="ADD5">
                   <block type="text" id=".{=s3%v;VOKcjo8,LjuJ">
                     <field name="TEXT"> |&gt; group()</field>
                   </block>
                 </value>
                 <value name="ADD6">
                   <block type="text" id="M;0{W([Va4?^;%p)r0{x">
                     <field name="TEXT"> |&gt; min()</field>
                   </block>
                 </value>
               </block>
             </value>
             <next>
               <block type="sendto_custom" id="5y7]CToD:3Ygw}FhT%(D">
                 <mutation xmlns="http://www.w3.org/1999/xhtml" items="" with_statement="true"></mutation>
                 <field name="INSTANCE">influxdb.0</field>
                 <field name="COMMAND">query</field>
                 <field name="LOG"></field>
                 <field name="WITH_STATEMENT">TRUE</field>
                 <value name="ARG0">
                   <shadow type="text" id="NNx0rHt6*yq21~HguTF2">
                     <field name="TEXT">from(bucket: "ioBroker") |&gt; range(start: -14d, stop: now()) |&gt; filter(fn: (r) =&gt; r["_measurement"] == "DP_Guenstigste") |&gt; filter(fn: (r) =&gt; r["_field"] == "value") |&gt; filter(fn: (r) =&gt; r._value &gt; 0) |&gt; group() |&gt; min()</field>
                   </shadow>
                   <block type="variables_get" id="B}$z9o?iyz%Y*wBKcvDF">
                     <field name="VAR" id=":)VLwK/`@H+J(LM#$WD7">flux</field>
                   </block>
                 </value>
                 <statement name="STATEMENT">
                   <block type="controls_if" id="@q#iNuUr!:m7zob|9%)u">
                     <mutation else="1"></mutation>
                     <value name="IF0">
                       <block type="logic_compare" id="|vlsW/V*`9wqY9BOp$Cx">
                         <field name="OP">NEQ</field>
                         <value name="A">
                           <block type="get_attr" id="^9J$l,fj?KhQ@qUB:Nas">
                             <value name="PATH">
                               <shadow type="text" id="~z[BTi$mMMYZ+GcomoOq">
                                 <field name="TEXT">error</field>
                               </shadow>
                             </value>
                             <value name="OBJECT">
                               <block type="variables_get" id="N@T;SzLIsoETGcO$H+ri">
                                 <field name="VAR" id="Hap*,T)oNQNM[M8bZeb7">result</field>
                               </block>
                             </value>
                           </block>
                         </value>
                         <value name="B">
                           <block type="logic_null" id="+U3-sX~0PE)=BKfCuo7O"></block>
                         </value>
                       </block>
                     </value>
                     <statement name="DO0">
                       <block type="debug" id="LCT~%[BmemUbm?b4]W6U" inline="true">
                         <field name="Severity">error</field>
                         <value name="TEXT">
                           <shadow type="text" id="mDRzWYEa1NzHsf1:2u16">
                             <field name="TEXT">test</field>
                           </shadow>
                           <block type="get_attr" id="8G61*~d~XGk2qY$ng{D4">
                             <value name="PATH">
                               <shadow type="text" id="45h$8w}|$sRP,uLQ(70%">
                                 <field name="TEXT">error</field>
                               </shadow>
                             </value>
                             <value name="OBJECT">
                               <block type="variables_get" id="LIT!%WT~ykvRmkF=1Gc9">
                                 <field name="VAR" id="Hap*,T)oNQNM[M8bZeb7">result</field>
                               </block>
                             </value>
                           </block>
                         </value>
                       </block>
                     </statement>
                     <statement name="ELSE">
                       <block type="debug" id="i.3k|[CfyGSyBVLFIjB2" inline="true" disabled="true">
                         <field name="Severity">log</field>
                         <value name="TEXT">
                           <shadow type="text" id=";}f4Nyq)G@a^KU.L=B$(">
                             <field name="TEXT">test</field>
                           </shadow>
                           <block type="convert_object2json" id="l-QhF#043ulT351D8qrO">
                             <field name="PRETTIFY">TRUE</field>
                             <value name="VALUE">
                               <block type="variables_get" id="7hwW#k]308Ky.)yG7JEF">
                                 <field name="VAR" id="Hap*,T)oNQNM[M8bZeb7">result</field>
                               </block>
                             </value>
                           </block>
                         </value>
                         <next>
                           <block type="variables_set" id="DD6;G(Wo]rIFaI+6.8:?">
                             <field name="VAR" id=".5z}V1WTXA6xD^rmM@W4">preis</field>
                             <value name="VALUE">
                               <block type="convert_tostring" id="MQ|=t3[21rC.~l3cFZea">
                                 <value name="VALUE">
                                   <block type="get_attr" id="n36f=MeXwJ3Yc1kOE1/$">
                                     <value name="PATH">
                                       <shadow type="text" id="(b0I9y0aoY#dd84CK7KS">
                                         <field name="TEXT">result.0.0._value</field>
                                       </shadow>
                                     </value>
                                     <value name="OBJECT">
                                       <block type="convert_object2json" id="ERm+qpC!vRo1]{;r$+$(">
                                         <field name="PRETTIFY">TRUE</field>
                                         <value name="VALUE">
                                           <block type="variables_get" id="+6+4;B%#/G*bG`j}yEgo">
                                             <field name="VAR" id="Hap*,T)oNQNM[M8bZeb7">result</field>
                                           </block>
                                         </value>
                                       </block>
                                     </value>
                                   </block>
                                 </value>
                               </block>
                             </value>
                             <next>
                               <block type="comment" id="KoZ]ZSByDTlWb4^s_)xQ">
                                 <field name="COMMENT">Kommentar</field>
                                 <next>
                                   <block type="debug" id="-M)_Dgrsw.+.x@5y1*()" inline="true" disabled="true">
                                     <field name="Severity">log</field>
                                     <value name="TEXT">
                                       <shadow type="text">
                                         <field name="TEXT">test</field>
                                       </shadow>
                                       <block type="variables_get" id="e--Fk%lR(K!5Z96CC{uu">
                                         <field name="VAR" id=".5z}V1WTXA6xD^rmM@W4">preis</field>
                                       </block>
                                     </value>
                                     <next>
                                       <block type="controls_if" id="iuLo^lOy^Qg)/#[A*q(L">
                                         <mutation else="1"></mutation>
                                         <value name="IF0">
                                           <block type="logic_compare" id="U.wOefdDK@:;kt3`^MmY">
                                             <field name="OP">EQ</field>
                                             <value name="A">
                                               <block type="text_length" id="-~ACns1F5u7EF=f(qfVs">
                                                 <value name="VALUE">
                                                   <shadow type="text" id=":xhtsG,UW?hdA9r~/IJ+">
                                                     <field name="TEXT">abc</field>
                                                   </shadow>
                                                   <block type="variables_get" id="[wde$^9G?veK#O[!#aK3">
                                                     <field name="VAR" id=".5z}V1WTXA6xD^rmM@W4">preis</field>
                                                   </block>
                                                 </value>
                                               </block>
                                             </value>
                                             <value name="B">
                                               <block type="math_number" id="O};wwWf9LLIWspXZ_ZG.">
                                                 <field name="NUM">5</field>
                                               </block>
                                             </value>
                                           </block>
                                         </value>
                                         <statement name="DO0">
                                           <block type="variables_set" id="vd3MOaB/E.B.%`GT+Fw%">
                                             <field name="VAR" id="19e+]})FfXk}~`Wj.4bM">htmlString</field>
                                             <value name="VALUE">
                                               <block type="text_join" id="BNP,)B,LyiB6@@zuP`MQ">
                                                 <mutation items="5"></mutation>
                                                 <value name="ADD0">
                                                   <block type="text" id="Nr2XbzF(;A*k`y8(DXE5">
                                                     <field name="TEXT">&lt;span class="station_open"&gt;</field>
                                                   </block>
                                                 </value>
                                                 <value name="ADD1">
                                                   <block type="text_getSubstring" id="!1KEwrCzBu%cT^;blwvN">
                                                     <mutation at1="false" at2="true"></mutation>
                                                     <field name="WHERE1">FIRST</field>
                                                     <field name="WHERE2">FROM_END</field>
                                                     <value name="STRING">
                                                       <block type="variables_get" id="GL]X=,r4[-|2qWDQJds}">
                                                         <field name="VAR" id=".5z}V1WTXA6xD^rmM@W4">preis</field>
                                                       </block>
                                                     </value>
                                                     <value name="AT2">
                                                       <block type="math_number" id="44i2DFWiG46^!/DI[e0n">
                                                         <field name="NUM">2</field>
                                                       </block>
                                                     </value>
                                                   </block>
                                                 </value>
                                                 <value name="ADD2">
                                                   <block type="text" id="tq/!H0_6OK3.h|##H,!/">
                                                     <field name="TEXT">&lt;sup style="font-size: 50%"&gt;</field>
                                                   </block>
                                                 </value>
                                                 <value name="ADD3">
                                                   <block type="text_charAt" id="C7-+51yO(qm[2Mn2l|Uf">
                                                     <mutation at="true"></mutation>
                                                     <field name="WHERE">FROM_END</field>
                                                     <value name="VALUE">
                                                       <block type="variables_get" id="`7MC`CAP(bGhlG,u.9n:">
                                                         <field name="VAR" id=".5z}V1WTXA6xD^rmM@W4">preis</field>
                                                       </block>
                                                     </value>
                                                     <value name="AT">
                                                       <block type="math_number" id="ZRGIl0[.5EC=iuSbU7Xj">
                                                         <field name="NUM">1</field>
                                                       </block>
                                                     </value>
                                                   </block>
                                                 </value>
                                                 <value name="ADD4">
                                                   <block type="text" id="~vixZf=L=I?W#tN=#J9`">
                                                     <field name="TEXT">&lt;/sup&gt; &lt;span class="station_combined_euro"&gt;€&lt;/span&gt;&lt;/span&gt;</field>
                                                   </block>
                                                 </value>
                                               </block>
                                             </value>
                                             <next>
                                               <block type="update" id="}!6!8(47NX^9;U6C_G#a">
                                                 <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                 <field name="OID">0_userdata.0.Datenpunkte.Diesel14TageTiefstpreis</field>
                                                 <field name="WITH_DELAY">FALSE</field>
                                                 <value name="VALUE">
                                                   <block type="variables_get" id="%ge_Q6+64-Xvb0u@}{Mb">
                                                     <field name="VAR" id="19e+]})FfXk}~`Wj.4bM">htmlString</field>
                                                   </block>
                                                 </value>
                                                 <next>
                                                   <block type="debug" id="+Po4LYz|l3-bP_*!uMLD" inline="true" disabled="true">
                                                     <field name="Severity">log</field>
                                                     <value name="TEXT">
                                                       <shadow type="text" id="upBA@|x/?+tqJ;{2_X^+">
                                                         <field name="TEXT">test</field>
                                                       </shadow>
                                                       <block type="variables_get" id="@Nvf(injXf$Yw_H/!rZO">
                                                         <field name="VAR" id="19e+]})FfXk}~`Wj.4bM">htmlString</field>
                                                       </block>
                                                     </value>
                                                     <next>
                                                       <block type="debug" id="PA/=R6e@4[]/tuW5m,I3" inline="true">
                                                         <field name="Severity">log</field>
                                                         <value name="TEXT">
                                                           <shadow type="text" id="[54tEV#3P+y$ZwK{^|g~">
                                                             <field name="TEXT">Diesel 14 Tage Tiefstpreis aktualisiert</field>
                                                           </shadow>
                                                         </value>
                                                       </block>
                                                     </next>
                                                   </block>
                                                 </next>
                                               </block>
                                             </next>
                                           </block>
                                         </statement>
                                         <statement name="ELSE">
                                           <block type="debug" id="eG[!NGV)c1@lXqO0RRaA" inline="true">
                                             <field name="Severity">warn</field>
                                             <value name="TEXT">
                                               <shadow type="text" id="e;9g?#xrOkVdJvU?OQWj">
                                                 <field name="TEXT">length of the price string does not fit</field>
                                               </shadow>
                                             </value>
                                           </block>
                                         </statement>
                                       </block>
                                     </next>
                                   </block>
                                 </next>
                               </block>
                             </next>
                           </block>
                         </next>
                       </block>
                     </statement>
                   </block>
                 </statement>
               </block>
             </next>
           </block>
         </statement>
       </block>
      </xml>
      

      Blockly ist zur Diskussion freigegeben 😉

      MfG Ralf

      posted in Skripten / Logik
      S
      SpacerX
    • RE: Shelly Einsteiger Fragen oder alternative?

      @wendy2702 https://github.com/iobroker-community-adapters/ioBroker.shelly/tree/master/docs/de

      posted in Hardware
      S
      SpacerX
    • RE: Shelly Verbrauchs-Historie für Tag, Woche, Monat, Jahr

      @iobaer

      Das sind meine Änderungen am original Script

      * Skript Name:      Shelly-Verbrauch
       * Skript Version:   1.60
       * Erstell-Datum:    08. Oktober 2021 | Update: 20. Juli 2022 | Override Functions by SpacerX 26.09.2022 (Zeile 402)
      

      Ab Zeile 402 sieht mein Skript dann so aus.
      Die Funktionen die einer Änderung bedurften werden einfach überschrieben. So muss ich nicht Quer durch den Code Änderungen vornehmen und bei Updates kann ich schnell anpassen.
      Ich habe die Hinweise mal im Code belassen.

      Zu beachten ist, es so angepasst ist das die Tageswerte um 23:59 Uhr, Wochenwerte am Sonntag um 23:59 Uhr, Monatswerte am letzten Tag des Monats um 23:59 Uhr und Jahreswerte am 31 Dez. um 23:59.

      In Zeile 409 wird dann der Userdatenpunkt definiert.

      /*
       * Override Functions
       * @autor 2022 SpacerX <spacerx@rbe-base.de>
       * Überschreibt Funktionen um Datenpunkte unter 0_userdata.0 zu erstellen
       *
       *** START SpacerX ***/
      // Userdatenpunkt
      var userdir = "0_userdata.0."; // Abschließender Punkt !!! WICHTIG !!!
      /**
       * Letzten des Monats berechnen.
       * @param {Date} oHeute
       */
      function letzterDesMonats(oHeute) {
          return new Date(oHeute.getFullYear(), oHeute.getMonth() + 1, 0).getDate();
      }
      //Override at row 48
      // Shelly Verbrauch aktualisieren - nachts um 23:59 Uhr
      function shelly_vebrauch_tag() {
          // Nochmals das Tagesupdate durchlaufen, damit die restlichen Werte gelesen werden
          shelly_verbrauch_update();
          // Datumsvariable
          var heute = new Date();
          // Heute zu Gestern verschieben. Täglich um 23:59 Uhr
          verschiebe_verbrauch_objekt("heute", "gestern");
          log("Shelly Verbrauch: Werte für gestern und heute aktualisiert!");
          // aktuelle Woche in letzte Woche verschieben. Am Sonntag um 23:59 Uhr
          if (heute.getDay() === 0) {   /*line changed by spacerx (Sonntag=0, Montag=1)*/
              verschiebe_verbrauch_objekt("diese_woche", "letzte_woche");
              log("Shelly Verbrauch: Werte für diese und letzte Woche aktualisiert!");
          }
          // aktueller Monat in letzten Monat verschieben. Am letzten des Monats um 23:59 Uhr
          if (heute.getDate() === letzterDesMonats(heute)) {   /*line changed by spacerx*/
              verschiebe_verbrauch_objekt("dieser_monat", "letzter_monat");
              log("Shelly Verbrauch: Werte für diesen und letzten Monat aktualisiert!");
          }
          // aktuelles Jahr in letztes Jahr verschieben. Am letzten Tag des Jahres um 23:59 Uhr
          if (heute.getDate() === letzterDesMonats(heute) && heute.getMonth() === 11) { /*line changed by spacerx (Jan=0, Dez=11)*/
              verschiebe_verbrauch_objekt("dieses_jahr", "letztes_jahr");
              log("Shelly Verbrauch: Werte für dieses und letztes Jahr aktualisiert!");
          }
      }
      //Override at row 254
      //Verschiebt das jeweilige Verbrauchs-Objekt und nullt den Ursprung (Tag, Woche, Monat, Jahr)
      function verschiebe_verbrauch_objekt(von, nach) {
          $('state[id=' + userdir + datenpunkt + '*.*.' + von + ']').each(function (id, i) {   /*line changed by spacerx*/
              // Temporärer Gruppen-Datenpunkt
              var tmp_dp = id.slice(0, -(von.length));
              var verbrauch = getState(id).val;
              if (verbrauch != null) {
                  setState(tmp_dp + nach, verbrauch, true);
              }
              // Setze "von" zurück
              setState(id, 0, true);
          });
      }
      //Override at row 267
      // Funktion um die aktuellen Namen des Shelly abzuholen
      function aktualisiere_namen() {
          if (typeof extendObject === "function") {
              shellyDpsName.each(function (id, i) {
                  if (existsState(id)) {
                      setState(shelly_DP_Name(id), String(getState(id).val), true);
                      extendObject(shelly_DP_Name_Main(id), {   /*line changed by spacerx*/
                          common: {
                              name: String(getState(id).val),
                              desc: String(getState(id).val)
                          },
                          type: "channel"
                      });
                  }
              });
          }
      }
      //Override at row 377
      function shelly_DP(dp, extended = false) {
          dp = dp.split(".");
          dp = userdir + datenpunkt + dp[2] + "." + dp[3];   /*line changed by spacerx*/
          if (extended) {
              dp = dp + "_Returned.";
          } else {
              dp = dp + ".";
          }
          return dp;
      }
      //Override at row 387
      function shelly_DP_Name(dp) {
          dp = dp.split(".");
          dp = userdir + datenpunkt + dp[2] + "." + dp[3];   /*line changed by spacerx*/
          return dp;
      }
      //Override at row 392
      function shelly_DP_Name_Main(dp) {
          dp = dp.split(".");
          dp = userdir + datenpunkt + dp[2];   /*line changed by spacerx*/
          return dp;
      }
      /*** END SpacerX ***/
      // Erster Start und Initialisierung
      shelly_verbrauch_erster_start();
      // Alle 15 Minuten das Skript für den Tagesverbrauch ausführen
      schedule('*/15 * * * *', shelly_verbrauch_update);
      /*** START Edit SpacerX ***/
      // Nachts um 24 Uhr werden die Werte in andere Variablen gespeichert, um den Verlauf zu erstellen
      //schedule('0 0 * * *', shelly_vebrauch_tag);
      // Nachts um 23:59 Uhr werden die Werte in andere Variablen gespeichert, um den Verlauf zu erstellen
      schedule('59 23 * * *', shelly_vebrauch_tag);
      /*** END Edit SpacerX ***/
      

      Warum Aktualisierung um 23:59 Uhr und nicht 0:00 Uhr?
      Ganz einfach, in InfluxDB gehört 0:00 Uhr schon zum nächsten Tag.

      posted in JavaScript
      S
      SpacerX
    • RE: Shelly Verbrauchs-Historie für Tag, Woche, Monat, Jahr

      @iobaer schau mal paar Beiträge höher. Ich favorisiere den Gesamtverbrauch. Damit lässt sich in meinem Fall hinterher flexibler weiter berechnen.

      posted in JavaScript
      S
      SpacerX

    Latest posts made by SpacerX

    • RE: Shelly Verbrauchs-Historie für Tag, Woche, Monat, Jahr

      @abc123 ok. Mit dem Bild aus deinem Anderen Beitrag wegen Saldierung passt das schon.
      Danke.

      posted in JavaScript
      S
      SpacerX
    • RE: Shelly Verbrauchs-Historie für Tag, Woche, Monat, Jahr

      @abc123 Das meinte ich doch!

      Die Datenpunkte des Pro3em sind anders benannt.

      Jetzt gibt es 2 Wege das zum laufen zu bringen.
      Einmal die Bitte an den Entwickler des Shelly Adapter die Datenpunkte gleich zu benennen oder es so wie du zu machen, die Abfrage der Datenpunkte in das Skript einzupflegen.

      Leiter ist bis jetzt niemand meiner Bitte nachgekommen mal den Objektbaum eines Pro3em zu zeigen.

      Jetzt haben wir die Dritte variante des Skript. Aber bitte.

      Dann gebt wenigstens bescheid wenn das so läuft dann werde ich meine Variante anpassen, vielleicht kommt bei mir ja auch mal so ein Plus3em Gerät an.

      Noch mal die Bitte mal einen Objektbaum dieses Gerätes zu Veröffentlichen.
      Im Quellcode das Adapters sollte ich auch fündig werden, hab nur gerade nicht die Not darin rum zu stöbern.

      posted in JavaScript
      S
      SpacerX
    • RE: Daten mit Blockly aus InfluxDB abrufen

      @stenmic ja klar. Viele Wege führen nach Rom.

      posted in Skripten / Logik
      S
      SpacerX
    • RE: Daten mit Blockly aus InfluxDB abrufen

      @stenmic mal eine Variante um Daten aus influxdb mit Blockly zu bekommen.

      https://forum.iobroker.net/topic/56125/blockly-influxdb2-0-flux-abfrage

      posted in Skripten / Logik
      S
      SpacerX
    • RE: Shelly Verbrauchs-Historie für Tag, Woche, Monat, Jahr

      @rboen Man müsste mal schauen ob die Datenpunkte beim Pro3Em genau so benannt sind wie bei dem 3EM.
      in dem oberen log steht ja 0 gefundene Datenpunkte.

      Kann mal jemand die Objektstruktur von so einem Pro3Em zeigen?

      posted in JavaScript
      S
      SpacerX
    • RE: Fehler, Vis mit der neuen ioBroker-app auf iphone

      @All

      dann wird's an der Cloud liegen, denn über die lokale Verbindung ist es kein Problem.
      Ich dachte das Projekt wird doch eh vollständig geladen.

      Gibt es keine Lösung dafür?

      posted in Cloud Dienste
      S
      SpacerX
    • RE: Fehler, Vis mit der neuen ioBroker-app auf iphone

      @homoran wie meinst du das?

      posted in Cloud Dienste
      S
      SpacerX
    • Fehler, Vis mit der neuen ioBroker-app auf iphone

      Hallo,

      ich hab ein Problem meine Vis mit der neuen ioBroker App über ProCloud anzuzeigen.

      Der Hintergrund wird noch geladen und dann kommt in den Protokoll folgende Meldung.

      cloud.0   2024-05-07 18:51:39.433  error  Cannot request web pages "http://127.0.0.1:8082/vis/tplVis-materialdesign-view-in-widget8.ejs": File tplVis-materialdesign-view-in-widget8.ejs not found: {}
      

      Kann mir jemand damit weiter helfen?

      posted in Cloud Dienste
      S
      SpacerX
    • RE: samsung tizen probleme, Adapter manuell deinstallieren,

      @jumbo125 ich denke mal nach Installation des Adapters musst du mit dem + Zeichen noch eine Instanz hinzu fügen.

      posted in ioBroker Allgemein
      S
      SpacerX
    • RE: Unterschiedliche Daten aus shelly Pro 3em

      @petermg garnicht. Deshalb benutze ich ein Script was den Reset erkennt und die bis dahin ermittelten Verbrauch aufsummiert.
      Siehe Beitrag oben.

      posted in Einbindung von Geräten
      S
      SpacerX
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo