Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Daten aus mysql auslesen und als Datenpunkt darstellen

    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

    Daten aus mysql auslesen und als Datenpunkt darstellen

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      Toby 2 last edited by

      Hallo,
      ich zeichne meine Verbrauchswerte z.B. für Strom in einer mySql Tabelle auf.
      Nun möchte ich eine Abfrage machen und den Verbrauch der letzten 24 Stunden als Datenpunkt weiter verarbeiten.
      Wie oder wo kann ich bei iBroker eine Query auf die mySql Datenbank einstellen und das Ergebnis dann an einen Datenpunkt übergeben?

      OliverIO 1 Reply Last reply Reply Quote 0
      • OliverIO
        OliverIO @Toby 2 last edited by

        @toby-2

        das geht über custom queries im javascript-adapter
        https://github.com/ioBroker/ioBroker.sql#custom-queries

        T 1 Reply Last reply Reply Quote 0
        • mickym
          mickym Most Active last edited by

          Falls du einer der wenigen bist, die NodeRed als Logikmaschine nutzen, dafür gibts auch eine Node.

          T 1 Reply Last reply Reply Quote 0
          • T
            Toby 2 @mickym last edited by

            @mickym Hm, weis jetzt nicht wie du das meinst.
            NoteRed nutze ich noch nicht. Aber wenn du mir sagen kannst wie ich in ioBroker über eine mySql einen Wert abfragen kann der anschließend weiter verwendet wird, kannst du mir das vielleicht sagen?

            mickym 1 Reply Last reply Reply Quote 0
            • T
              Toby 2 @OliverIO last edited by

              @oliverio Danke dir! Die Installation von iBroker.syl hat funktioniert und auf GitHub finde ich auch eine ganze Reihe von Querrys. Was ich aber immer noch nicht weis ist wo ich diese eintragen muss um daraus einen Wert zu erhalten?

              1 Reply Last reply Reply Quote 0
              • mickym
                mickym Most Active @Toby 2 last edited by mickym

                @toby-2 wie gesagt - Du kannst natürlich auch den sql Adapter verwenden und puzzeln. Wenn Du nodeRed nutzt, dann gibt es einen Node.

                d4118e06-4056-48f9-b612-dc2c8f6f82bb-image.png

                Hier siehst Du wie du über die SQL Abfrage im topic

                SELECT * FROM `iobroker`.`ts_number` WHERE `id`=1 AND `ack`= true
                

                hier eine Array mit allen Werten zurück bekommst. (in diesem Fall ein Array mit 5676 Werten)

                Über HeidiSQL kannst Du ja die Daten direkt sehen:

                5ef4a5e3-628f-488b-ac83-c91bdd0909e8-image.png

                aber wie gesagt, wenn Du lieber puzzelst /Blockly oder JS nutzen willst, dann mach das - ich will hier niemand mehr von NodeRed mit iobroker überzeugen - zudem ich merke, das es immer weniger Leute gibt, die NodeRed nutzen.

                1 Reply Last reply Reply Quote 0
                • T
                  Toby 2 last edited by

                  @mickym
                  Danke dir!
                  Dein Kommentar hörte sich aber so an als ob ich da was nutzen möchte was längst out ist.
                  Jetzt bin ich halt noch recht neu und wollte mich da schon an aktuellem orientieren.
                  Gibt es da noch etwas anderes? Kann ich es z.B. auch mit Blockly machen?

                  mickym OliverIO 2 Replies Last reply Reply Quote 0
                  • mickym
                    mickym Most Active @Toby 2 last edited by

                    @toby-2 Du kannst auch mit SendTo und Puzzle Teilchen arbeiten.

                    sendTo('sql.0', 'query', 'SELECT id FROM datapoints WHERE name="system.adapter.admin.0.memRss"')

                    aber nachdem ich in diesem Blockly Tool wieder mal keine debug Ausgabe sehe - lasse ich das mal

                    34a97ca0-773e-4872-be9c-32076166f414-image.png

                    Nodered hat eine viel größere Community als das Blockly - aber die meisten nutzen halt Blockly - deswegen habe ich einfach auch immer weniger Lust. Das wesentlich mächtigere Tool ist NodeRed.

                    T 1 Reply Last reply Reply Quote 0
                    • T
                      Toby 2 @mickym last edited by

                      @mickym Verstanden, Danke!
                      Hab mich da jetzt ein bisschen eingelesen und werde wohl wieder ein neuer User für Node-Red 🙂

                      mickym 1 Reply Last reply Reply Quote 0
                      • OliverIO
                        OliverIO @Toby 2 last edited by

                        @toby-2 said in Daten aus mysql auslesen und als Datenpunkt darstellen:

                        Dein Kommentar hörte sich aber so an als ob ich da was nutzen möchte was längst out ist.

                        nein weder blockly noch node-red ist out.
                        blockly, node-red, javascript wird halt als logik-maschine verwendet,
                        um etwas komplexere abhängigkeiten oder berechnungen mit den Datenpunkten abzubilden.
                        Welche davon hängt von deinen Vorkenntnissen ab.
                        blockly wird von den leuten hier, welche keinerleit vorkenntnisse haben, gerne genommen, da es die logik des ablaufs grafisch darstellt und durch die puzzle logik etwas aufzeigt, wo man noch etwas anknüpfen muss bzw wo was fehlt.
                        theoretisch ist blockly genauso erweiterbar, wie node-red, allerdings gibt es da wesentlich weniger erweiterungskomponenten.

                        node-red hat eher den flußdiagramm charakter.
                        für node-red gibt es um einiges mehr erweiterungskomponenten (erfinder von node-red war übrigens ibm, die das dann in den open source geben haben)

                        mit javascript ist man relativ frei in der erstellung und es gibt ü+ber 2.5mio erweiterungspakete, welche bei npmjs.com angeschaut und runtergeladen werden können.

                        meine kritik an blockly ist, das du im rahmen der gegebenen möglichkeiten gefangen bist.
                        bei allen logikmaschinen/programmieren, musst du generell dein gesamtproblem in einzelprobleme unterteilen und das dann in anweisungen umsetzen (das ist der teil, der meines erachtens und erfahrung für die meisten am allerschwierigsten ist).
                        wenn ich das lerne, dann würde ich lieber gleich eine richtige programmiersprache lernen. wenn du mal eine kannst, ist es nicht mehr so weit zu jeder beliebigen anderen programmiersprache (ihre tücken haben allerdings alle irgendwo)
                        aber irgendwie sind den leuten die grafischen darstellungen lieber, als die textnotation einer programmiersprache.

                        wenn jemand mit blockly auskommt, dann alles gut.

                        mickym 1 Reply Last reply Reply Quote 0
                        • mickym
                          mickym Most Active @Toby 2 last edited by mickym

                          @toby-2 Na das ist schön - wenn Du Dich mit NodeRed beschäftigst - aber ist kein muss.

                          Um den SQL Adapter für Abfragen zu nutzen - geht das ganz einfach:

                          18fcc788-d25b-4899-b298-c86103e4fc38-image.png

                          Hier zum Import:

                          <xml xmlns="https://developers.google.com/blockly/xml">
                           <variables>
                             <variable id="0kmoGXLJs!@g,S;T+Lc]">result</variable>
                           </variables>
                           <block type="sendto_custom" id="$%S6C$:|`ey`(I$*YT{q" x="-587" y="13">
                             <mutation xmlns="http://www.w3.org/1999/xhtml" items="" with_statement="true"></mutation>
                             <field name="INSTANCE">sql.0</field>
                             <field name="COMMAND">query</field>
                             <field name="LOG"></field>
                             <field name="WITH_STATEMENT">TRUE</field>
                             <value name="ARG0">
                               <shadow type="text" id="*aW$D7~2)i;+}C+tKTnB">
                                 <field name="TEXT">SELECT * FROM `iobroker`.`ts_number` WHERE `id`=1 AND `ack`= true</field>
                               </shadow>
                             </value>
                             <statement name="STATEMENT">
                               <block type="debug" id="qV{L!s;VlBubHvw7RSf?">
                                 <field name="Severity">log</field>
                                 <value name="TEXT">
                                   <shadow type="text" id="LbGF@h;3g9Jq}(nSJxo,">
                                     <field name="TEXT">test</field>
                                   </shadow>
                                   <block type="variables_get" id="-`3l!@9HSk!90yV@}o+1">
                                     <field name="VAR" id="0kmoGXLJs!@g,S;T+Lc]">result</field>
                                   </block>
                                 </value>
                               </block>
                             </statement>
                           </block>
                          </xml>
                          

                          Um die einzelnen Werte dann aus der Abfrage herauszuholen - hier mal ein Vorschlag:

                          689e35ee-ec17-401c-8c8e-51980b0e5403-image.png

                          <xml xmlns="https://developers.google.com/blockly/xml">
                           <variables>
                             <variable id="0kmoGXLJs!@g,S;T+Lc]">result</variable>
                             <variable id="qh27]sQep{sXnr@AL98n">Daten</variable>
                             <variable id="w/VBRo(.v~kwg49s{VdM">i</variable>
                           </variables>
                           <block type="sendto_custom" id="$%S6C$:|`ey`(I$*YT{q" x="-587" y="13">
                             <mutation xmlns="http://www.w3.org/1999/xhtml" items="" with_statement="true"></mutation>
                             <field name="INSTANCE">sql.0</field>
                             <field name="COMMAND">query</field>
                             <field name="LOG"></field>
                             <field name="WITH_STATEMENT">TRUE</field>
                             <value name="ARG0">
                               <shadow type="text" id="*aW$D7~2)i;+}C+tKTnB">
                                 <field name="TEXT">SELECT * FROM `iobroker`.`ts_number` WHERE `id`=1 AND `ack`= true</field>
                               </shadow>
                             </value>
                             <statement name="STATEMENT">
                               <block type="debug" id="qV{L!s;VlBubHvw7RSf?" disabled="true">
                                 <field name="Severity">log</field>
                                 <value name="TEXT">
                                   <shadow type="text" id="LbGF@h;3g9Jq}(nSJxo,">
                                     <field name="TEXT">test</field>
                                   </shadow>
                                   <block type="variables_get" id="-`3l!@9HSk!90yV@}o+1">
                                     <field name="VAR" id="0kmoGXLJs!@g,S;T+Lc]">result</field>
                                   </block>
                                 </value>
                                 <next>
                                   <block type="variables_set" id="IZc,JP:SfS-UFIDv@[qH">
                                     <field name="VAR" id="qh27]sQep{sXnr@AL98n">Daten</field>
                                     <value name="VALUE">
                                       <block type="get_attr" id=".WQ{RykBy9@uQ3JTu5lI">
                                         <value name="PATH">
                                           <shadow type="text" id="eKf_UH,NoA4Zcg5L71p:">
                                             <field name="TEXT">result</field>
                                           </shadow>
                                         </value>
                                         <value name="OBJECT">
                                           <block type="variables_get" id="osA|x?artg;p5X(ePXh.">
                                             <field name="VAR" id="0kmoGXLJs!@g,S;T+Lc]">result</field>
                                           </block>
                                         </value>
                                       </block>
                                     </value>
                                     <next>
                                       <block type="controls_forEach" id="PVdm$(jVHax7vByb7S_b">
                                         <field name="VAR" id="w/VBRo(.v~kwg49s{VdM">i</field>
                                         <value name="LIST">
                                           <block type="variables_get" id="jEor7lq79(Bp.N=:=-TT">
                                             <field name="VAR" id="qh27]sQep{sXnr@AL98n">Daten</field>
                                           </block>
                                         </value>
                                         <statement name="DO">
                                           <block type="debug" id="(GbZNYc:)WoBJy2CUi)5" disabled="true">
                                             <field name="Severity">log</field>
                                             <value name="TEXT">
                                               <shadow type="text" id="VW_4K.b:./?LrUwz(M8?">
                                                 <field name="TEXT">test</field>
                                               </shadow>
                                               <block type="variables_get" id="bk*Ud]$%C%%hvlN$m!C8">
                                                 <field name="VAR" id="w/VBRo(.v~kwg49s{VdM">i</field>
                                               </block>
                                             </value>
                                             <next>
                                               <block type="controls_if" id=".p:=`IoJH5{8/Q=|rAT]">
                                                 <value name="IF0">
                                                   <block type="logic_compare" id="{HfG8^q#w/Exe2}{-(kv">
                                                     <field name="OP">NEQ</field>
                                                     <value name="A">
                                                       <block type="get_attr" id="m@)r!sp6c#/IyU9Y};+(">
                                                         <value name="PATH">
                                                           <shadow type="text" id="d+HUC;SPLz~;1jdk3FrT">
                                                             <field name="TEXT">val</field>
                                                           </shadow>
                                                         </value>
                                                         <value name="OBJECT">
                                                           <block type="variables_get" id="Pj-lZ@l1MhVPL1O$B873">
                                                             <field name="VAR" id="w/VBRo(.v~kwg49s{VdM">i</field>
                                                           </block>
                                                         </value>
                                                       </block>
                                                     </value>
                                                     <value name="B">
                                                       <block type="logic_null" id="D[NZ^JI}-SQ9_3[YuY8I"></block>
                                                     </value>
                                                   </block>
                                                 </value>
                                                 <statement name="DO0">
                                                   <block type="debug" id="Fa[w6[Satirrd;9B_ZL_">
                                                     <field name="Severity">log</field>
                                                     <value name="TEXT">
                                                       <shadow type="text" id="wEH?0Bdn~S,YWF:bqmjb">
                                                         <field name="TEXT">test</field>
                                                       </shadow>
                                                       <block type="get_attr" id="HIi,0s=+C_22tsnH52C[">
                                                         <value name="PATH">
                                                           <shadow type="text" id="SBLdKE$zI+.ko,;rwF*Y">
                                                             <field name="TEXT">val</field>
                                                           </shadow>
                                                         </value>
                                                         <value name="OBJECT">
                                                           <block type="variables_get" id="%LfS;p~Ln:O6St2YVWEU">
                                                             <field name="VAR" id="w/VBRo(.v~kwg49s{VdM">i</field>
                                                           </block>
                                                         </value>
                                                       </block>
                                                     </value>
                                                   </block>
                                                 </statement>
                                               </block>
                                             </next>
                                           </block>
                                         </statement>
                                       </block>
                                     </next>
                                   </block>
                                 </next>
                               </block>
                             </statement>
                           </block>
                          </xml>
                          

                          Aber wie gesagt - damit hast Du nun die einzelnen Werte aus der Query - aber damit habe ich genug gepuzzelt. Aber damit kannst ja mal beginnen - mit der Query - und nebenbei kannst Dir ja NodeRed anschauen. 😉

                          1 Reply Last reply Reply Quote 0
                          • mickym
                            mickym Most Active @OliverIO last edited by mickym

                            @oliverio sagte in Daten aus mysql auslesen und als Datenpunkt darstellen:

                            node-red hat eher den flußdiagramm charakter.
                            für node-red gibt es um einiges mehr erweiterungskomponenten (erfinder von node-red war übrigens ibm, die das dann in den open source geben haben)

                            👍 👍 👍 https://de.wikipedia.org/wiki/Node-RED

                            und blockly stammt von google - das vergessen viele, die immer meinen das sein das Tool sei vom iobroker.

                            https://de.wikipedia.org/wiki/Blockly

                            und in Node-Red gibts auch eine Node mit der man puzzeln kann.

                            https://github.com/bartbutenaers/node-red-contrib-blockly

                            Ich entschuldige mich ein bisschen. Ich bin einfach nur gefrustet - weil alle nur Blockly im iobroker nutzen, anstelle sich erst mal damit zu beschäftigen, welches Tool am Besten geeignet ist und ich persönlich merke halt - wie gerade neue User immer mehr zu diesem Puzzle-Tool gedrängt werden.

                            Wie @OliverIO gesagt hat, hat NodeRed als grafisches Tool im Flussdiagrammstil einen unschätzbaren Vorteil, um Deine Logik sichtbar zu machen und damit auch die Fehlersuche zu erleichtern.

                            Also grafisches Tool hat NodeRed wesentlich bessere Vorteile die Logik sichtbar zu machen. Ansonsten kann man Javascript lernen - das Blockly erzeugt in meinen Augen keinen wesentlichen Vorteil - da es Javascript auch nur in Puzzleteile aufteilt, aber keine wirklichen funktionalen Bausteine bietet.

                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post

                            Support us

                            ioBroker
                            Community Adapters
                            Donate
                            FAQ Cloud / IOT
                            HowTo: Node.js-Update
                            HowTo: Backup/Restore
                            Downloads
                            BLOG

                            587
                            Online

                            31.7k
                            Users

                            79.9k
                            Topics

                            1.3m
                            Posts

                            3
                            12
                            716
                            Loading More Posts
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes
                            Reply
                            • Reply as topic
                            Log in to reply
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                            The ioBroker Community 2014-2023
                            logo