Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Hilfe USB Daten per Blockly senden

    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

    UNSOLVED Hilfe USB Daten per Blockly senden

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

      Hey Ho,
      Vielleicht kann mir jemand weiter helfen.
      Also folgendes habe ich vor:
      Ich habe einen Controller der meine Strömungspumpen im Aquarium steuert.
      Dieser ist per usb Kabel an einen windows Rechner angeschlossen und mit dem kleinen Programm was zum Controller gehört kann man verschiedene strömungs Programme an den Controller senden.
      Das was von der Software an den Controller gesendet wird sieht so aus:
      2;30;30;30;30;100;100;100;100;60;1;0;1;4;0;1;1;1;53;0;0;0;0

      Mehr ist es nicht.
      Nun habe ich einen usb Anschluss an meiner eigenen Aquarium Steuerung eingebaut und das Original Kabel hat auf beiden Seiten einen USB A Stecker.
      Den habe ich in meiner Aquarium Steuerung an meinem Raspberry an Gpio 7 angelötet - als Input mit dem usb Kabel weiß Data minus
      Dann an Gpio 8 als Output grünes Kabel Data plus
      Beide im rpi2.0 Adapter dann als output und Input deklariert.
      Nun würde ich gerne diese Daten Zeile per usb upstream und Blockly auf das Gerät übertragen. Und das ganze dann per Cron Job steuern also wann welches Programm gesendet wird.
      Es gibt die Steuerungen
      Intervall
      Sequenzial
      Impulse und Wellengang
      Dazu hatte ich datenpunkte erstellt und die Steuerungs Zeilen da als value eingefügt. Nun weiß ich absolut nicht wie ich diesen Windows sende Befehl von dem datenpunkt an den gpio übertragen kann. Der downstream ist nicht so wichtig darüber könnte man das aktuelle Programm was läuft runter laden und in dem Original Steuerungs Programm einsehen.
      Meine Datnepunkte:
      998CDD10-1E0B-4A41-B7A4-D3AC007BC2E1.jpeg

      Das Blockly Script was ich geschrieben hatte, funktioniert so leider garnicht.
      7E49CFF0-C001-490B-B8C4-F1A7A63CA7D8.jpeg

      <xml xmlns="http://www.w3.org/1999/xhtml">
        <variables>
          <variable type="" id="j},jeced{ZOOuK{-Kj[H">send</variable>
          <variable type="undefined" id="Intervall">Intervall</variable>
          <variable type="" id="{H0$F#{I7XI68*Jv!}RM">Wellengang</variable>
          <variable type="undefined" id="Wellengang">Wellengang</variable>
        </variables>
        <block type="variables_set" id="~u6%NbL7yZul$=78:5)q" x="-112" y="-287">
          <field name="VAR" id="j},jeced{ZOOuK{-Kj[H" variabletype="">send</field>
          <value name="VALUE">
            <block type="get_value" id="7x7sd2X,?qoMVITD^/dU">
              <field name="ATTR">val</field>
              <field name="OID">rpi2.0.gpio.8.state</field>
            </block>
          </value>
          <next>
            <block type="variables_set" id="-doKoE!=5x`T2.S]R4kl">
              <field name="VAR" id="Intervall" variabletype="undefined">Intervall</field>
              <value name="VALUE">
                <block type="get_value" id=",Uih~x3K+%NlJ*9ZIK6*">
                  <field name="ATTR">val</field>
                  <field name="OID">Aqua_Control.0.Tunze_Steuerung.Intervall</field>
                </block>
              </value>
              <next>
                <block type="variables_set" id="x*],L~^}#LN~Or=J}(Yt">
                  <field name="VAR" id="{H0$F#{I7XI68*Jv!}RM" variabletype="">Wellengang</field>
                  <value name="VALUE">
                    <block type="get_value" id="25GXy6p|31GIw+2d!2p,">
                      <field name="ATTR">val</field>
                      <field name="OID">Aqua_Control.0.Tunze_Steuerung.Wellengang</field>
                    </block>
                  </value>
                  <next>
                    <block type="schedule_create" id="xc4Y5+Bp?J]6PIDxH6vv">
                      <field name="NAME">Wellengang</field>
                      <value name="SCHEDULE">
                        <shadow type="field_cron" id="9[PPm{p9~%zHxoe#q!D.">
                          <field name="CRON">* * * * *</field>
                        </shadow>
                        <block type="field_cron" id="(F8;edIfk_P/$fjFVI2o">
                          <field name="CRON">48 19 * * *</field>
                        </block>
                      </value>
                      <statement name="STATEMENT">
                        <block type="variables_set" id="3U@gUQlvoZ*Ea#-R!we-">
                          <field name="VAR" id="j},jeced{ZOOuK{-Kj[H" variabletype="">send</field>
                          <value name="VALUE">
                            <block type="variables_get" id="H.`kGU;qGCXuM}SCq56N">
                              <field name="VAR" id="{H0$F#{I7XI68*Jv!}RM" variabletype="">Wellengang</field>
                            </block>
                          </value>
                          <next>
                            <block type="exec" id=",,i{+e6C_TAWNo9+;0,)">
                              <mutation with_statement="false"></mutation>
                              <field name="WITH_STATEMENT">FALSE</field>
                              <field name="LOG">log</field>
                              <value name="COMMAND">
                                <shadow type="text" id="lwocm?I@~_VmZ%.}VlMP">
                                  <field name="TEXT">send</field>
                                </shadow>
                                <block type="variables_get" id="REw3ki7IM)f^LBadPOWq">
                                  <field name="VAR" id="j},jeced{ZOOuK{-Kj[H" variabletype="">send</field>
                                </block>
                              </value>
                            </block>
                          </next>
                        </block>
                      </statement>
                      <next>
                        <block type="schedule_create" id="Wzh.3oS`a86_+CsK6J@U">
                          <field name="NAME">Intervall</field>
                          <value name="SCHEDULE">
                            <shadow type="field_cron" id="9[PPm{p9~%zHxoe#q!D.">
                              <field name="CRON">* * * * *</field>
                            </shadow>
                            <block type="field_cron" id="N!pXd:vIQGN|AX%P2|,i">
                              <field name="CRON">0 20 * * *</field>
                            </block>
                          </value>
                          <statement name="STATEMENT">
                            <block type="variables_set" id="fO8AIE{_-dO5V!LT$5UP">
                              <field name="VAR" id="j},jeced{ZOOuK{-Kj[H" variabletype="">send</field>
                              <value name="VALUE">
                                <block type="variables_get" id="97Ui_`{=*qS$|lRL%?Qq">
                                  <field name="VAR" id="Intervall" variabletype="undefined">Intervall</field>
                                </block>
                              </value>
                              <next>
                                <block type="exec" id="!dCHJpvc[#X}Hb^v%Zra">
                                  <mutation with_statement="false"></mutation>
                                  <field name="WITH_STATEMENT">FALSE</field>
                                  <field name="LOG">log</field>
                                  <value name="COMMAND">
                                    <shadow type="text" id="lwocm?I@~_VmZ%.}VlMP">
                                      <field name="TEXT">send</field>
                                    </shadow>
                                    <block type="variables_get" id="e#(*zN]+oksKOwWf/REm">
                                      <field name="VAR" id="j},jeced{ZOOuK{-Kj[H" variabletype="">send</field>
                                    </block>
                                  </value>
                                </block>
                              </next>
                            </block>
                          </statement>
                        </block>
                      </next>
                    </block>
                  </next>
                </block>
              </next>
            </block>
          </next>
        </block>
      </xml>
      
      

      Normal wäre das schon klasse nur wollte ich zb im VIS des späteren wenn dann die Steuerung läuft das ich einen datenpunkt verknüpfe und je nach dem was da drin steht kann ich auch selbst sagen was laufen soll also abgesehen von der cron Steuerung Bzw per Button dann den Inhalt des datenpunkten per Button ändern und die Blockly Steuerung soll dann darauf reagieren und die jeweilige Steuerung senden.
      Eine Hilfe wäre mir Mega wichtig, da es die letzte Instanz ist die mir noch fehlt um es meinen Fischen und Korallen so Natur getreu wie möglich zu machen.
      Ich möchte auch das kleine Netbook nicht mehr dauerhaft am laufen haben um die Steuerung zeitgesteuert zu ändern.

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @Aphofis last edited by

        @Aphofis sagte:

        Den habe ich in meiner Aquarium Steuerung an meinem Raspberry an Gpio 7 angelötet - als Input mit dem usb Kabel weiß Data minus

        Was hat USB mit GPIO zu tun ?

        Aphofis 1 Reply Last reply Reply Quote 0
        • Aphofis
          Aphofis @paul53 last edited by Aphofis

          @paul53
          Ich hatte versucht ein usb Kabel Data + Data - an gpio pins am pi an zu löten um die Daten darüber zu senden geht aber auch über einen der normalen usb Anschlüsse am pi.
          Wenn ich die USB ports Auslese kommt bei dem angeschlossenen Controller folgendes raus:
          Bus 001 Device 006: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC
          Vielleicht kann man die Daten Bzw die TXT Datei per JavaScript darüber senden.
          Die Dokumente liegen in /opt/iobroker/iobroker-data/tunze/
          Dort gibt es vier Text Dateien in denen die Steuer Zeile drin ist.
          intervall.txt
          impulse.txt
          sequenzial.txt
          Und wellengang.txt
          Muss ja irgendwie möglich sein das so zu programmieren wenn der jeweilige datenpunkt auf true gesetzt wird das dann die nötige Datei per usb an den Controller gesendet wird.
          Hatte auch eine Mail an Tunze an meinen Kontakt bei denen gesendet mit etwas Glück kann der mir sagen wie die die Daten an den Controller senden. Insofern die solche Informationen überhaupt rausgeben dürfen.
          Man merkt ich bin ein wenig hilflos da ich JavaScript oder Windows Befehle überhaupt nicht programmieren kann und einfach versuche dieses Projekt zu realisieren.

          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @Aphofis last edited by

            @Aphofis sagte:

            Dort gibt es vier Text Dateien in denen die Steuer Zeile drin ist.
            intervall.txt
            impulse.txt
            sequenzial.txt
            Und wellengang.txt

            Du bist informiert, wie die Daten dieser 4 Dateien so auszuwerten sind, dass sie in der richtigen Reihenfolge an die serielle Schnittstelle (USB-UART) zu senden sind ?
            Die serielle Schnittstelle zu bedienen, ist alles andere als trivial.

            1 Reply Last reply Reply Quote 0
            • P
              peterfido last edited by

              Moin.
              Die seriellen Schnittstellen bediene ich alle zuverlässig per Node Red. Da ist das dann trivial. 😊

              paul53 2 Replies Last reply Reply Quote 0
              • paul53
                paul53 @peterfido last edited by

                @peterfido sagte:

                Node Red. Da ist das dann trivial.

                Mit Node Red kenne ich mich nicht aus. Man kann die Sendedaten sicherlich über einen Datenpunkt an Node Red übergeben ?

                Ich vermute, dass Du diese Einstellmöglichkeiten in Vis realisieren möchtest ?
                Tunze.JPG

                Die Daten sollen dann per Skript so aufbereitet werden, dass sie per Node Red an den Tunze Controller gesendet werden ? Damit ist Blockly wohl überfordert und man muss natives Javascript verwenden.

                Aphofis 1 Reply Last reply Reply Quote 0
                • Aphofis
                  Aphofis @paul53 last edited by

                  @paul53
                  Ich möchte den gesamten Inhalt senden also eine komplette Steuerung so wie wenn man die Daten exportiert als TXT Datei so soll dann auch das komplette programm an den Controller gesendet werden.
                  Eine komplette Steuerung wäre dann mit allen Einstellungen:
                  2;30;30;30;30;100;100;100;100;60;1;0;1;4;0;1;1;1;53;0;0;0;0
                  Da ist alles enthalten. Klar wenn’s per Blockly nicht geht langt es ja wenn man ein JavaScript schreibt und es per datenpunkt auslöst

                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @Aphofis last edited by

                    @Aphofis sagte:

                    Ich möchte den gesamten Inhalt senden

                    Das habe ich auch so verstanden.

                    @Aphofis sagte in Hilfe USB Daten per Blockly senden:

                    Daten exportiert als TXT Datei so soll dann auch das komplette programm an den Controller gesendet werden.

                    Du möchtest die Textdateien am PC erstellen, an den RPi übertragen und aus den Dateien einen Sendestring für Node Red zusammenstellen ? Dann benötigt man den Aufbau der Textdateien passend zum Sendestring.

                    1 Reply Last reply Reply Quote 0
                    • Aphofis
                      Aphofis last edited by Aphofis

                      Die TXT Dateien sind schon fertig!
                      Ob der Inhalt so direkt an den Controller gesendet wird weiß ich nicht genau!
                      Ich wollte das ganze per Blockly machen oder halt per JavaScript und dann das JavaScript zeitgesteuert über Blockly starten dh die TXT Datei oder nur der Inhalt soll dann an den Controller gesendet werden.
                      Der Inhalt der Text Datei denke ich wird in dieser Reihenfolge gesendet.
                      2;30;30;30;30;100;100;100;100;60;1;0;1;4;0;1;1;1;53;0;0;0;0

                      Das ist ein Programm!

                      paul53 1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @Aphofis last edited by

                        @Aphofis sagte:

                        Der Inhalt der Text Datei denke ich wird in dieser Reihenfolge gesendet.

                        Welcher Datei (es gibt 4) ? Ist der Inhalt einer Datei identisch mit dem gesendeten String ?

                        Aphofis 1 Reply Last reply Reply Quote 0
                        • Aphofis
                          Aphofis @paul53 last edited by Aphofis

                          @paul53
                          Das sind die einzelnen Daten zu den Programmen

                          Intervall Modus
                          1;30;30;30;30;100;100;100;100;320;15;0;1;4;0;1;5;0;65;0;0;1;0

                          Pulse Only
                          0;30;100;30;100;100;30;100;30;250;15;0;1;4;0;1;5;0;65;0;0;1;0

                          Sequential Modus
                          2;30;30;30;30;100;100;100;100;199;15;1;0;1;1;1;2;0;54;0;0;0;0

                          Sequential Wellenmodus
                          2;30;30;30;30;100;100;100;100;60;1;0;1;4;0;1;1;1;53;0;0;0;0

                          Wie der Sende String aussieht weiß ich auch nicht Ich weiß nur das dass die Daten sind die die Tunze Steuerung am PC (Laptop) abspeichert wenn man sie exportiert oder aus der TXT Datei importiert

                          paul53 1 Reply Last reply Reply Quote 0
                          • paul53
                            paul53 @Aphofis last edited by

                            @Aphofis sagte:

                            Wie der Sende String aussieht weiß ich auch nicht

                            Auf welcher Grundlage soll dann ein Skript erstellt werden ?

                            Aphofis 1 Reply Last reply Reply Quote 0
                            • Aphofis
                              Aphofis @paul53 last edited by

                              @paul53
                              Ich warte noch auf eine Antwort von Tunze ob die mir sagen können wie das ganze aussehen muss.
                              Ich vermute das per usb nur diese Semikolon getrennten Werte gesendet werden und intern im Controller auf einem Chip gespeichert werden. Bis man die Steuerung durch hochladen einer anderen Steuerung ändert das Programm vom Controller stellt ja auch nur ein was man in den Text Dateien hat wenn man davon eine lädt weiß das Programm ja anhand der anfangsnummer um welche Steuerung es sich handelt

                              1 Reply Last reply Reply Quote 0
                              • paul53
                                paul53 @peterfido last edited by

                                @peterfido sagte:

                                Die seriellen Schnittstellen bediene ich alle zuverlässig per Node Red. Da ist das dann trivial.

                                Dann teste es doch erst mal mit Node Red. Den Inhalt einer Datei hast Du bereits in einem Datenpunkt.
                                Wenn das funktioniert, können wir mit Javascript weitermachen, um die unterschiedlichen Dateien zu verarbeiten.

                                Aphofis 2 Replies Last reply Reply Quote 0
                                • Aphofis
                                  Aphofis @paul53 last edited by

                                  @paul53
                                  Ich wüsste nicht mal wie ich das testen soll!
                                  Blockly geht ja noch ein wenig. Mit Node Red kenne ich mich überhaupt nicht aus

                                  1 Reply Last reply Reply Quote 0
                                  • Aphofis
                                    Aphofis @paul53 last edited by

                                    @paul53
                                    ich habe ja die Steuerungs Daten in einem Datenpunkt doch wie weise ich denn Blockly an das was im Datenpunkt steht über den oben angegebenen USB Port vom Pi zu senden!? und die Datenpunkte sind als Zeichenkette formatiertm geht das so oder muss es eine andere Option sein ?

                                    1 Reply Last reply Reply Quote 0
                                    • P
                                      peterfido last edited by

                                      Moin,
                                      Ja, als Text bzw. Zeichenkette. Ist es immer dieselbe, kannst du die auch in Node Red fest eintragen und das Senden dann boolisch oder numerisch auslösen.
                                      Bin leider nicht am PC, sondern unterwegs. Sonst würde ich ein Beispiel posten.

                                      Aphofis 1 Reply Last reply Reply Quote 0
                                      • Aphofis
                                        Aphofis @peterfido last edited by

                                        @peterfido
                                        Irgendwie ist es sicherlich möglich diese Daten per USB zu senden.
                                        Ein techniker von Tunze also der Firma von der der Controller stammt ist an meinem Problem dran.
                                        Ich hoffe ich bekomme bald eine antwort. Wie die Daten gesendet werden müssen.

                                        1 Reply Last reply Reply Quote 0
                                        • P
                                          peterfido last edited by

                                          Hallo,
                                          das, was da als Textdatei exportiert wird, ist wohl nicht dass, was die Software an den Controller sendet. Diese bietet ja noch mehr Möglichkeiten, wie das Aulsesen der aktuellen Config.

                                          Da auf den Hersteller warten oder per seriellem Sniffer mitloggen, was da so hin- und hergeschickt wird. Interessant ist darüber hinaus noch die Baudrate sowie eine evtl. Verschlüsselung / Prüfsumme.?

                                          Aphofis 1 Reply Last reply Reply Quote 0
                                          • Aphofis
                                            Aphofis @peterfido last edited by

                                            @peterfido
                                            Ja, ich hoffe der Techniker darf die Informationen so raus geben.
                                            Nur scheint der viel um die Ohren zu haben.
                                            Wie wir alle!
                                            Da er sich noch nicht gemedet hat.
                                            Obgleich Tunze immer sehr schnell ist mit dem antworten per Mail.
                                            Ein Kumpel von mir ist Programmierer, ich hoffe ich kann ihn überreden das er sich den Controller mal anschaut.
                                            Er hatte mir schon mal eine Batch Datei bzw ein kleines Batch programm geschrieben was die Daten sendet aber nur über die Original Software drüber gelegt. ohne hatte er es noch nicht versucht.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            581
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            26
                                            1404
                                            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