Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Wallbox Mennekes Amtron auslesen - Adapter aus Skript?

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    351

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.6k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.5k

Wallbox Mennekes Amtron auslesen - Adapter aus Skript?

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascriptmonitoring
18 Beiträge 11 Kommentatoren 6.0k Aufrufe 11 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • M Marc_St

    In ioBroker als JC Skript stark vereinfacht - nur um den Syntax zu illustrieren - also so:

    var curlcommand = "curl -d '{ \"Permanent\": true, \"RemoteCurr\": 6, \"AutoChg\": null, \"ChgState\": \"Continue\", \"Uid\": null}' -H \"Content-Type: application/json\" -X POST http://10.0.1.28:25000/MHCP/1.0/ChargeData?DevKey=XXXXXX";
    
    function AmtronBeschreiben() {
        exec(curlcommand, function(err, stdout, stderr) {
            if (err) {
                log(stderr,'error');
                return;
            }
        });
    }
    
    AmtronBeschreiben(); // bei Scriptstart
    

    Der Trick ist also das Escapen der Anführungsstrichen in den Anführungsstrichen.

    Die XXXXXX sind natürlich durch den individuellen Key zu ersetzen. Die IP-Adresse auch. Der Port dürfte hingegen immer stimmen.

    R Offline
    R Offline
    ritzo
    schrieb am zuletzt editiert von
    #5

    @Marc_St
    Servus, leider bin ich ein absoluter Neuling mit ioBroker und habe keinerlei Ahnung von JS. Habe dein obiges Script mal kopiert und unter Scripte ein neues JS-Script erstellt. IP und PNI eingetragen. Leider funktioniert gar nichts .-(.
    Die Javascript-Instanz kackt ab, wenn ich starte.
    Könnte mir bitte jemand helfen? Hier der log:
    host.buanet-iobroker1 2021-03-25 16:33:07.990 info Restart adapter system.adapter.javascript.0 because enabled
    host.buanet-iobroker1 2021-03-25 16:33:07.989 error instance system.adapter.javascript.0 terminated with code 1 (JS_CONTROLLER_STOPPED)
    host.buanet-iobroker1 2021-03-25 16:33:07.989 error Caught by controller[2]: at Pipe.<anonymous> (net.js:675:12)
    host.buanet-iobroker1 2021-03-25 16:33:07.989 error Caught by controller[2]: at Socket.EventEmitter.emit (domain.js:483:12)
    host.buanet-iobroker1 2021-03-25 16:33:07.989 error Caught by controller[2]: at Socket.emit (events.js:314:20)
    host.buanet-iobroker1 2021-03-25 16:33:07.988 error Caught by controller[2]: at Socket.<anonymous> (internal/child_process.js:444:11)
    host.buanet-iobroker1 2021-03-25 16:33:07.988 error Caught by controller[2]: at maybeClose (internal/child_process.js:1022:16)
    host.buanet-iobroker1 2021-03-25 16:33:07.988 error Caught by controller[2]: at ChildProcess.EventEmitter.emit (domain.js:483:12)
    host.buanet-iobroker1 2021-03-25 16:33:07.988 error Caught by controller[2]: at ChildProcess.emit (events.js:314:20)
    host.buanet-iobroker1 2021-03-25 16:33:07.988 error Caught by controller[2]: at ChildProcess.exithandler (child_process.js:299:7)
    host.buanet-iobroker1 2021-03-25 16:33:07.988 error Caught by controller[2]: at script.js.Abfrage_Amtron:53:28
    host.buanet-iobroker1 2021-03-25 16:33:07.987 error Caught by controller[2]: at JSON.parse (<anonymous>)
    host.buanet-iobroker1 2021-03-25 16:33:07.987 error Caught by controller[2]: SyntaxError: Unexpected end of JSON input
    host.buanet-iobroker1 2021-03-25 16:33:07.987 error Caught by controller[1]: at Pipe.<anonymous> (net.js:675:12)
    host.buanet-iobroker1 2021-03-25 16:33:07.987 error Caught by controller[1]: at Socket.EventEmitter.emit (domain.js:483:12)
    host.buanet-iobroker1 2021-03-25 16:33:07.987 error Caught by controller[1]: at Socket.emit (events.js:314:20)
    host.buanet-iobroker1 2021-03-25 16:33:07.987 error Caught by controller[1]: at Socket.<anonymous> (internal/child_process.js:444:11)
    host.buanet-iobroker1 2021-03-25 16:33:07.986 error Caught by controller[1]: at maybeClose (internal/child_process.js:1022:16)
    host.buanet-iobroker1 2021-03-25 16:33:07.986 error Caught by controller[1]: at ChildProcess.EventEmitter.emit (domain.js:483:12)
    host.buanet-iobroker1 2021-03-25 16:33:07.986 error Caught by controller[1]: at ChildProcess.emit (events.js:314:20)
    host.buanet-iobroker1 2021-03-25 16:33:07.986 error Caught by controller[1]: at ChildProcess.exithandler (child_process.js:299:7)
    host.buanet-iobroker1 2021-03-25 16:33:07.986 error Caught by controller[1]: at script.js.Abfrage_Amtron:89:28
    host.buanet-iobroker1 2021-03-25 16:33:07.986 error Caught by controller[1]: at JSON.parse (<anonymous>)
    host.buanet-iobroker1 2021-03-25 16:33:07.985 error Caught by controller[1]: SyntaxError: Unexpected end of JSON input
    host.buanet-iobroker1 2021-03-25 16:33:07.985 error Caught by controller[0]: at Pipe.<anonymous> (net.js:675:12)
    host.buanet-iobroker1 2021-03-25 16:33:07.985 error Caught by controller[0]: at Socket.EventEmitter.emit (domain.js:483:12)
    host.buanet-iobroker1 2021-03-25 16:33:07.985 error Caught by controller[0]: at Socket.emit (events.js:314:20)
    host.buanet-iobroker1 2021-03-25 16:33:07.985 error Caught by controller[0]: at Socket.<anonymous> (internal/child_process.js:444:11)
    host.buanet-iobroker1 2021-03-25 16:33:07.984 error Caught by controller[0]: at maybeClose (internal/child_process.js:1022:16)
    host.buanet-iobroker1 2021-03-25 16:33:07.984 error Caught by controller[0]: at ChildProcess.EventEmitter.emit (domain.js:483:12)
    host.buanet-iobroker1 2021-03-25 16:33:07.984 error Caught by controller[0]: at ChildProcess.emit (events.js:314:20)
    host.buanet-iobroker1 2021-03-25 16:33:07.984 error Caught by controller[0]: at ChildProcess.exithandler (child_process.js:299:7)
    host.buanet-iobroker1 2021-03-25 16:33:07.983 error Caught by controller[0]: at script.js.Abfrage_Amtron:131:28
    host.buanet-iobroker1 2021-03-25 16:33:07.983 error Caught by controller[0]: at JSON.parse (<anonymous>)
    host.buanet-iobroker1 2021-03-25 16:33:07.979 error Caught by controller[0]: SyntaxError: Unexpected end of JSON input
    javascript.0 2021-03-25 16:33:07.876 error (13217) script.js.Abfrage_Amtron: SyntaxError: Unexpected end of JSON input

    Chris_CarryflagC 1 Antwort Letzte Antwort
    0
    • R ritzo

      @Marc_St
      Servus, leider bin ich ein absoluter Neuling mit ioBroker und habe keinerlei Ahnung von JS. Habe dein obiges Script mal kopiert und unter Scripte ein neues JS-Script erstellt. IP und PNI eingetragen. Leider funktioniert gar nichts .-(.
      Die Javascript-Instanz kackt ab, wenn ich starte.
      Könnte mir bitte jemand helfen? Hier der log:
      host.buanet-iobroker1 2021-03-25 16:33:07.990 info Restart adapter system.adapter.javascript.0 because enabled
      host.buanet-iobroker1 2021-03-25 16:33:07.989 error instance system.adapter.javascript.0 terminated with code 1 (JS_CONTROLLER_STOPPED)
      host.buanet-iobroker1 2021-03-25 16:33:07.989 error Caught by controller[2]: at Pipe.<anonymous> (net.js:675:12)
      host.buanet-iobroker1 2021-03-25 16:33:07.989 error Caught by controller[2]: at Socket.EventEmitter.emit (domain.js:483:12)
      host.buanet-iobroker1 2021-03-25 16:33:07.989 error Caught by controller[2]: at Socket.emit (events.js:314:20)
      host.buanet-iobroker1 2021-03-25 16:33:07.988 error Caught by controller[2]: at Socket.<anonymous> (internal/child_process.js:444:11)
      host.buanet-iobroker1 2021-03-25 16:33:07.988 error Caught by controller[2]: at maybeClose (internal/child_process.js:1022:16)
      host.buanet-iobroker1 2021-03-25 16:33:07.988 error Caught by controller[2]: at ChildProcess.EventEmitter.emit (domain.js:483:12)
      host.buanet-iobroker1 2021-03-25 16:33:07.988 error Caught by controller[2]: at ChildProcess.emit (events.js:314:20)
      host.buanet-iobroker1 2021-03-25 16:33:07.988 error Caught by controller[2]: at ChildProcess.exithandler (child_process.js:299:7)
      host.buanet-iobroker1 2021-03-25 16:33:07.988 error Caught by controller[2]: at script.js.Abfrage_Amtron:53:28
      host.buanet-iobroker1 2021-03-25 16:33:07.987 error Caught by controller[2]: at JSON.parse (<anonymous>)
      host.buanet-iobroker1 2021-03-25 16:33:07.987 error Caught by controller[2]: SyntaxError: Unexpected end of JSON input
      host.buanet-iobroker1 2021-03-25 16:33:07.987 error Caught by controller[1]: at Pipe.<anonymous> (net.js:675:12)
      host.buanet-iobroker1 2021-03-25 16:33:07.987 error Caught by controller[1]: at Socket.EventEmitter.emit (domain.js:483:12)
      host.buanet-iobroker1 2021-03-25 16:33:07.987 error Caught by controller[1]: at Socket.emit (events.js:314:20)
      host.buanet-iobroker1 2021-03-25 16:33:07.987 error Caught by controller[1]: at Socket.<anonymous> (internal/child_process.js:444:11)
      host.buanet-iobroker1 2021-03-25 16:33:07.986 error Caught by controller[1]: at maybeClose (internal/child_process.js:1022:16)
      host.buanet-iobroker1 2021-03-25 16:33:07.986 error Caught by controller[1]: at ChildProcess.EventEmitter.emit (domain.js:483:12)
      host.buanet-iobroker1 2021-03-25 16:33:07.986 error Caught by controller[1]: at ChildProcess.emit (events.js:314:20)
      host.buanet-iobroker1 2021-03-25 16:33:07.986 error Caught by controller[1]: at ChildProcess.exithandler (child_process.js:299:7)
      host.buanet-iobroker1 2021-03-25 16:33:07.986 error Caught by controller[1]: at script.js.Abfrage_Amtron:89:28
      host.buanet-iobroker1 2021-03-25 16:33:07.986 error Caught by controller[1]: at JSON.parse (<anonymous>)
      host.buanet-iobroker1 2021-03-25 16:33:07.985 error Caught by controller[1]: SyntaxError: Unexpected end of JSON input
      host.buanet-iobroker1 2021-03-25 16:33:07.985 error Caught by controller[0]: at Pipe.<anonymous> (net.js:675:12)
      host.buanet-iobroker1 2021-03-25 16:33:07.985 error Caught by controller[0]: at Socket.EventEmitter.emit (domain.js:483:12)
      host.buanet-iobroker1 2021-03-25 16:33:07.985 error Caught by controller[0]: at Socket.emit (events.js:314:20)
      host.buanet-iobroker1 2021-03-25 16:33:07.985 error Caught by controller[0]: at Socket.<anonymous> (internal/child_process.js:444:11)
      host.buanet-iobroker1 2021-03-25 16:33:07.984 error Caught by controller[0]: at maybeClose (internal/child_process.js:1022:16)
      host.buanet-iobroker1 2021-03-25 16:33:07.984 error Caught by controller[0]: at ChildProcess.EventEmitter.emit (domain.js:483:12)
      host.buanet-iobroker1 2021-03-25 16:33:07.984 error Caught by controller[0]: at ChildProcess.emit (events.js:314:20)
      host.buanet-iobroker1 2021-03-25 16:33:07.984 error Caught by controller[0]: at ChildProcess.exithandler (child_process.js:299:7)
      host.buanet-iobroker1 2021-03-25 16:33:07.983 error Caught by controller[0]: at script.js.Abfrage_Amtron:131:28
      host.buanet-iobroker1 2021-03-25 16:33:07.983 error Caught by controller[0]: at JSON.parse (<anonymous>)
      host.buanet-iobroker1 2021-03-25 16:33:07.979 error Caught by controller[0]: SyntaxError: Unexpected end of JSON input
      javascript.0 2021-03-25 16:33:07.876 error (13217) script.js.Abfrage_Amtron: SyntaxError: Unexpected end of JSON input

      Chris_CarryflagC Offline
      Chris_CarryflagC Offline
      Chris_Carryflag
      schrieb am zuletzt editiert von Chris_Carryflag
      #6

      @ritzo said in Wallbox Mennekes Amtron auslesen - Adapter aus Skript?:

      @Marc_St
      Servus, leider bin ich ein absoluter Neuling mit ioBroker und habe keinerlei Ahnung von JS. Habe dein obiges Script mal kopiert und unter Scripte ein neues JS-Script erstellt. IP und PNI eingetragen. Leider funktioniert gar nichts .-(.
      Die Javascript-Instanz kackt ab, wenn ich starte.
      Könnte mir bitte jemand helfen? Hier der log:
      host.buanet-iobroker1 2021-03-25 16:33:07.990 info Restart adapter system.adapter.javascript.0 because enabled
      host.buanet-iobroker1 2021-03-25 16:33:07.989 error instance system.adapter.javascript.0 terminated with code 1 (JS_CONTROLLER_STOPPED)
      host.buanet-iobroker1 2021-03-25 16:33:07.989 error Caught by controller[2]: at Pipe.<anonymous> (net.js:675:12)
      host.buanet-iobroker1 2021-03-25 16:33:07.989 error Caught by controller[2]: at Socket.EventEmitter.emit (domain.js:483:12)
      host.buanet-iobroker1 2021-03-25 16:33:07.989 error Caught by controller[2]: at Socket.emit (events.js:314:20)
      host.buanet-iobroker1 2021-03-25 16:33:07.988 error Caught by controller[2]: at Socket.<anonymous> (internal/child_process.js:444:11)
      host.buanet-iobroker1 2021-03-25 16:33:07.988 error Caught by controller[2]: at maybeClose (internal/child_process.js:1022:16)
      host.buanet-iobroker1 2021-03-25 16:33:07.988 error Caught by controller[2]: at ChildProcess.EventEmitter.emit (domain.js:483:12)
      host.buanet-iobroker1 2021-03-25 16:33:07.988 error Caught by controller[2]: at ChildProcess.emit (events.js:314:20)
      host.buanet-iobroker1 2021-03-25 16:33:07.988 error Caught by controller[2]: at ChildProcess.exithandler (child_process.js:299:7)
      host.buanet-iobroker1 2021-03-25 16:33:07.988 error Caught by controller[2]: at script.js.Abfrage_Amtron:53:28
      host.buanet-iobroker1 2021-03-25 16:33:07.987 error Caught by controller[2]: at JSON.parse (<anonymous>)
      host.buanet-iobroker1 2021-03-25 16:33:07.987 error Caught by controller[2]: SyntaxError: Unexpected end of JSON input
      host.buanet-iobroker1 2021-03-25 16:33:07.987 error Caught by controller[1]: at Pipe.<anonymous> (net.js:675:12)
      host.buanet-iobroker1 2021-03-25 16:33:07.987 error Caught by controller[1]: at Socket.EventEmitter.emit (domain.js:483:12)
      host.buanet-iobroker1 2021-03-25 16:33:07.987 error Caught by controller[1]: at Socket.emit (events.js:314:20)
      host.buanet-iobroker1 2021-03-25 16:33:07.987 error Caught by controller[1]: at Socket.<anonymous> (internal/child_process.js:444:11)
      host.buanet-iobroker1 2021-03-25 16:33:07.986 error Caught by controller[1]: at maybeClose (internal/child_process.js:1022:16)
      host.buanet-iobroker1 2021-03-25 16:33:07.986 error Caught by controller[1]: at ChildProcess.EventEmitter.emit (domain.js:483:12)
      host.buanet-iobroker1 2021-03-25 16:33:07.986 error Caught by controller[1]: at ChildProcess.emit (events.js:314:20)
      host.buanet-iobroker1 2021-03-25 16:33:07.986 error Caught by controller[1]: at ChildProcess.exithandler (child_process.js:299:7)
      host.buanet-iobroker1 2021-03-25 16:33:07.986 error Caught by controller[1]: at script.js.Abfrage_Amtron:89:28
      host.buanet-iobroker1 2021-03-25 16:33:07.986 error Caught by controller[1]: at JSON.parse (<anonymous>)
      host.buanet-iobroker1 2021-03-25 16:33:07.985 error Caught by controller[1]: SyntaxError: Unexpected end of JSON input
      host.buanet-iobroker1 2021-03-25 16:33:07.985 error Caught by controller[0]: at Pipe.<anonymous> (net.js:675:12)
      host.buanet-iobroker1 2021-03-25 16:33:07.985 error Caught by controller[0]: at Socket.EventEmitter.emit (domain.js:483:12)
      host.buanet-iobroker1 2021-03-25 16:33:07.985 error Caught by controller[0]: at Socket.emit (events.js:314:20)
      host.buanet-iobroker1 2021-03-25 16:33:07.985 error Caught by controller[0]: at Socket.<anonymous> (internal/child_process.js:444:11)
      host.buanet-iobroker1 2021-03-25 16:33:07.984 error Caught by controller[0]: at maybeClose (internal/child_process.js:1022:16)
      host.buanet-iobroker1 2021-03-25 16:33:07.984 error Caught by controller[0]: at ChildProcess.EventEmitter.emit (domain.js:483:12)
      host.buanet-iobroker1 2021-03-25 16:33:07.984 error Caught by controller[0]: at ChildProcess.emit (events.js:314:20)
      host.buanet-iobroker1 2021-03-25 16:33:07.984 error Caught by controller[0]: at ChildProcess.exithandler (child_process.js:299:7)
      host.buanet-iobroker1 2021-03-25 16:33:07.983 error Caught by controller[0]: at script.js.Abfrage_Amtron:131:28
      host.buanet-iobroker1 2021-03-25 16:33:07.983 error Caught by controller[0]: at JSON.parse (<anonymous>)
      host.buanet-iobroker1 2021-03-25 16:33:07.979 error Caught by controller[0]: SyntaxError: Unexpected end of JSON input
      javascript.0 2021-03-25 16:33:07.876 error (13217) script.js.Abfrage_Amtron: SyntaxError: Unexpected end of JSON input

      Vielleicht hilft dir als Anfänger ein Blockly weiter?
      Ich setze den Ladestrom meiner Amtron Xtra11 C2 je nach Abhängigkeit der zur Verfügung stehenden Überschussproduktion meiner Photovoltaikanlage. Die Überschussproduktion wird über das Energymeter der Solaredge-Anlage per modbus-Adapter nach ioBroker ausgelesen und anschließend setze ich den Ladestrom der Amtron über ein entsprechendes Blockly mittels Javascript-Adapter.
      Die folgende Funktion (kannst du als Blockly importieren) setzt den an die Funktion übergebenen Wert als Ladestrom in der Amtron-Wallbox. Da ich mein Auto nur zwischen 6A und maximal 16A laden kann, habe ich die Werte in der Funktion entsprechend begrenzt (kannst du ja anpassen). Außerdem wird der zu setzende Ladestrom auf eine Ganzzahl gerundet (falls das beim Aufruf der Funktion nicht gewährleistet ist). Die Funktion kannst du dann mittels Funktionsaufruf "fncSetzeLadestrom" und dem zu setzenden Wert des Ladestroms aufrufen.
      Natürlich musst du die IP-Adresse deiner Wallbox und den DevKey in dem "http://.." Teil des Strings auf deine Werte anpassen.

      <block xmlns="https://developers.google.com/blockly/xml" type="procedures_defnoreturn" id="ZHB/oPXk|NyVSR!HfeoK" x="63" y="-188">
        <mutation>
          <arg name="varLadestrom" varid="tv{(3+$)lNe5m=#TB{oC"></arg>
        </mutation>
        <field name="NAME">fncSetzeLadestrom</field>
        <comment pinned="false" h="80" w="160">Setze Ladestrom wenn zwischen 6 und 16 Ampere</comment>
        <statement name="STACK">
          <block type="controls_if" id="cEY-s)},/wY*hAVBDJkd">
            <mutation elseif="1"></mutation>
            <value name="IF0">
              <block type="logic_compare" id="aEhmi4R~`$e2cLHD*DG!">
                <field name="OP">LT</field>
                <value name="A">
                  <block type="variables_get" id="UBwS8SST60Z(JD*Vnqr|">
                    <field name="VAR" id="tv{(3+$)lNe5m=#TB{oC">varLadestrom</field>
                  </block>
                </value>
                <value name="B">
                  <block type="math_number" id="djswcPLuk,^BmLRI%.6Y">
                    <field name="NUM">6</field>
                  </block>
                </value>
              </block>
            </value>
            <statement name="DO0">
              <block type="variables_set" id="Pi,a#Lp~e[hJN*=r~P^s">
                <field name="VAR" id="tv{(3+$)lNe5m=#TB{oC">varLadestrom</field>
                <value name="VALUE">
                  <block type="math_number" id=",#FMN8:l^XE63UllHV{3">
                    <field name="NUM">6</field>
                  </block>
                </value>
              </block>
            </statement>
            <value name="IF1">
              <block type="logic_compare" id="tK%IB]m8WB-WN!#yf_Se">
                <field name="OP">GT</field>
                <value name="A">
                  <block type="variables_get" id="wW5Qrm*i1}(.VJkJu_Jd">
                    <field name="VAR" id="tv{(3+$)lNe5m=#TB{oC">varLadestrom</field>
                  </block>
                </value>
                <value name="B">
                  <block type="math_number" id="1Cd/+#J|/-I}NeTps+9p">
                    <field name="NUM">16</field>
                  </block>
                </value>
              </block>
            </value>
            <statement name="DO1">
              <block type="variables_set" id="_O8^HmPV3YxEY;q/=Of/">
                <field name="VAR" id="tv{(3+$)lNe5m=#TB{oC">varLadestrom</field>
                <value name="VALUE">
                  <block type="math_number" id="E%9P[2jnOjpP;v|Y]r?c">
                    <field name="NUM">16</field>
                  </block>
                </value>
              </block>
            </statement>
            <next>
              <block type="variables_set" id="VP$ypbF5x#1}+%j8JmY5">
                <field name="VAR" id="#+r-:;5gpgYxCp`GwQU`">strCurl</field>
                <value name="VALUE">
                  <block type="text_join" id="x/5ouB:(EBvAesw0lbX|">
                    <mutation items="3"></mutation>
                    <value name="ADD0">
                      <block type="text" id="9A:n{9b#qDIj7T9SI*1)">
                        <field name="TEXT">curl -X POST --header 'Content-Type: application/json' -d '{"Permanent": true,"RemoteCurr00": </field>
                      </block>
                    </value>
                    <value name="ADD1">
                      <block type="math_round" id="U*ZKVb%*E(LsY!#T17UK">
                        <field name="OP">ROUNDDOWN</field>
                        <value name="NUM">
                          <shadow type="math_number" id="!(Qsy/wnnZ).iZ`8h/k[">
                            <field name="NUM">3.1</field>
                          </shadow>
                          <block type="variables_get" id="].k}kEJevu#i0kP:5b0V">
                            <field name="VAR" id="tv{(3+$)lNe5m=#TB{oC">varLadestrom</field>
                          </block>
                        </value>
                      </block>
                    </value>
                    <value name="ADD2">
                      <block type="text" id="$K4$9[QSM.53jJQ^Qzsb">
                        <field name="TEXT">,"AutoChg": null,"ChgState": null,"Uid": "00000000"}' 'http://192.xxx.xxx.xxx:25000/MHCP/1.0/ChargeData?DevKey=xxxxxx'</field>
                      </block>
                    </value>
                  </block>
                </value>
                <next>
                  <block type="exec" id="qF5(3i?}HvXF4tp^/g{n">
                    <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation>
                    <field name="WITH_STATEMENT">FALSE</field>
                    <field name="LOG"></field>
                    <value name="COMMAND">
                      <shadow type="text" id="XuY-zC6#VkKD|Z,%}nY_">
                        <field name="TEXT">text</field>
                      </shadow>
                      <block type="variables_get" id="7h`nj+Pl8%nQZ}Sk1b/V">
                        <field name="VAR" id="#+r-:;5gpgYxCp`GwQU`">strCurl</field>
                      </block>
                    </value>
                  </block>
                </next>
              </block>
            </next>
          </block>
        </statement>
      </block>
      
      1 Antwort Letzte Antwort
      0
      • M Marc_St

        Liebes Forum,

        nach einigem Experimentieren hier ein Script, welches meine Mennekes Amtron Xtra 22 c2 Wallbox ausliest. Der Code ist nicht elegant, sondern sehr modular und übersichtlich gestaltet. Bitte nicht lachen - es ging mir erst einmal darum, dass es läuft.

        Zunächst möchte ich das einfach Teilen. Dann geht es mir auch um einen Adapter - dass es den nicht gab, hatte mich geärgert und zur Skriptentwicklung getrieben. Es gibt bis heute keinen Adapter. Deshalb meine Folgefrage:

        Wie aufwendig wäre es, aus so einem Skript einen Adapter zu erstellen? Im Grunde müsste man nur PIN und IP-Adresse als Parameter übergeben ...

        // Basierend auf https://github.com/lephisto/amtron
        
        var abfrage_DevInfo = "curl -H 'Accept: application/json' http://10.0.1.28:25000/MHCP/1.0/DevInfo?DevKey=999999";
        var abfrage_ChargeData = "curl -H 'Accept: application/json' http://10.0.1.28:25000/MHCP/1.0/ChargeData?DevKey=999999";
        var abfrage_Statistics_Day = "curl -H 'Accept: application/json' http://10.0.1.28:25000/MHCP/1.0/Statistics/Day?DevKey=999999";
        var abfrage_Statistics_Week = "curl -H 'Accept: application/json' http://10.0.1.28:25000/MHCP/1.0/Statistics/Week?DevKey=999999";
        var abfrage_Statistics_Month = "curl -H 'Accept: application/json' http://10.0.1.28:25000/MHCP/1.0/Statistics/Month?DevKey=999999";
        var abfrage_Statistics_Year = "curl -H 'Accept: application/json' http://10.0.1.28:25000/MHCP/1.0/Statistics/Year?DevKey=999999";
        var abfrage_Statistics_Annual = "curl -H 'Accept: application/json' http://10.0.1.28:25000/MHCP/1.0/Statistics/Annual?DevKey=999999";
        
        // DevInfo: 
        createState('javascript.0.Amtron.DevInfo.SN', 0);
        
        createState('javascript.0.Amtron.DevInfo.DevMode', 0);
        createState('javascript.0.Amtron.DevInfo.ChgState', 0);
        
        createState('javascript.0.Amtron.DevInfo.Phases', 0);
        
        createState('javascript.0.Amtron.DevInfo.MaxCurr', 0, {unit: 'A'});
        createState('javascript.0.Amtron.DevInfo.MaxPwr', 0, {unit: 'W'});
        createState('javascript.0.Amtron.DevInfo.MaxCurrWb', 0, {unit: 'A'});
        
        // ChargeData
        
        createState('javascript.0.Amtron.ChargeData.ChgDuration', 0, {unit: 's'});
        createState('javascript.0.Amtron.ChargeData.ChgNrg', 0, {unit: 'Wh'});
        createState('javascript.0.Amtron.ChargeData.NrgDemand', 0, {unit: 'Wh'});
        
        createState('javascript.0.Amtron.ChargeData.ActPwr', 0, {unit: 'W'});
        createState('javascript.0.Amtron.ChargeData.ActCurr', 0, {unit: 'A'});
        
        // Statistics_Day
        createState('javascript.0.Amtron.Statistics.Day.ChgNrg', 0, {unit: 'Wh'});
        
        // Statistics_Week
        createState('javascript.0.Amtron.Statistics.Week.ChgNrg', 0, {unit: 'Wh'});
        
        // Statistics_Month
        createState('javascript.0.Amtron.Statistics.Month.ChgNrg', 0, {unit: 'Wh'});
        
        // Statistics_Year
        createState('javascript.0.Amtron.Statistics.Year.ChgNrg', 0, {unit: 'Wh'});
        
        // Statistics_Annual
        createState('javascript.0.Amtron.Statistics.Annual.ChgNrg', 0, {unit: 'Wh'});
        
        function abfrageStarten() {
            exec(abfrage_DevInfo, function(err, stdout, stderr) {
                if (err) {
                    log("Error: " + err,"warn"); return;
                    }
                var objects = JSON.parse(stdout);
        
                //       var DevName = objects.DevName.DevName;        /* Name of the device */
                //       var LocTime = objects.LocTime;        /* timestamp */
                //       var Summer = objects.Summer;        /* Is summer time? */
                //       var Tz = objects.Tz;             /* timezone offset in minutes */
                //       var ItemNo = objects.ItemNo;         /* item number */           
                setState("javascript.0.Amtron.DevInfo.SN",objects.Sn.toFixed(0), true); /* Serial Number */
                //        var Hcc3 = objects.Hcc3          /* Info about the HCC3 (main controller) */
                //        var Hmi = objects.Hmi            /* Info about hardware software? */
                //        var Rfid = objects.Rfid          /* Info about RFID? */
                //        var Wifi = objects.Wifi           /* WiFi module version? */
                //        var FixedVehCosts = objects.FixedVehCosts  /* Fixed vehicle costs as specified in the app */
                //        var OldVehCosts = objects.OldVehCosts    /* OldVehicle costs? */
                //        var Color = objects.Color         /* ? */
                setState("javascript.0.Amtron.DevInfo.DevMode",objects.DevMode, true);  /* Curent charging mode */
                setState("javascript.0.Amtron.DevInfo.ChgState",objects.ChgState, true); /* Current charging state */
                //        var WifiOn = objects.WifiOn       /* true if WiFi is on */
                //        var AutoChg = objects.AutoChg       /* true if auto-start charging is enabled*/
                //        var ChgContinue = objects.ChgContinue   /* true if charging should continue after power outage */
                //        var Err = objects.Err            /* current error code, 0 if there is none */
                //        var Battery = objects.Battery        /* EV battery capacity for EnergyManager in Wh*/
                setState("javascript.0.Amtron.DevInfo.Phases",objects.Phases.toFixed(0), true); /* number of phases connected */
                //        var Cable = objects.Cable         /* true if cable is connected/installed? */
                //        var Auth = objects.Auth          /* true if auth by rfid is enabled? */
                //        var DsoEnabled = objects.DsoEnabled    /* ? */
                //        var EmEnabled = objects.EmEnabled     /* true if EnergyManager mode is enabled */
                setState("javascript.0.Amtron.DevInfo.MaxCurr",objects.MaxCurr.toFixed(0), true); /* currently set max. charging current per phase in A*/
                setState("javascript.0.Amtron.DevInfo.MaxPwr",objects.MaxPwr.toFixed(0), true); /* currently set max. charging power in W*/     
                setState("javascript.0.Amtron.DevInfo.MaxCurrWb",objects.MaxCurrWb.toFixed(0), true); /* upper limit for charging current per phase in A*/    
            });
        
            exec(abfrage_ChargeData, function(err, stdout, stderr) {
                if (err) {
                    log("Error: " + err,"warn"); return;
                    }
                var objects = JSON.parse(stdout);
        
                // "ChgState": [EnumChargingState],
                // "Tariff": [string],      /* Current tariff */
                // "Price": [number],       /* Price per kWh with current tariff in 0.1 cents per kWh */
                // "Uid": [string],         /* UserId? */
                setState("javascript.0.Amtron.ChargeData.ChgDuration",objects.ChgDuration, true); /* how long the wallbox is charging the EV */
                setState("javascript.0.Amtron.ChargeData.ChgNrg",objects.ChgNrg.toFixed(0), true); /* how much energy the wallbox has charged in Wh */
                setState("javascript.0.Amtron.ChargeData.NrgDemand",objects.NrgDemand.toFixed(0), true); /* energy demand of the vehicle in Wh */
                // "Solar": [number],       /* maybe percentage of solar energy for current charge */
                // "EmTime": [number],      /* time in which the vehicle has to be fully charged, in Energy Manager mode in minutes*/
                // "RemTime": [number],     /* time remaining of the set EmTime in minutes */
                setState("javascript.0.Amtron.ChargeData.ActPwr",objects.ActPwr, true); /* current power draw of vehicle */
                setState("javascript.0.Amtron.ChargeData.ActCurr",objects.ActCurr.toFixed(0), true); /* currently set max. charging current per phase in A*/
                // "MaxCurrT1": [number],   /* max current per phase in tariff1 */
                // "BeginH_T1": [number],   /* ? */
                // "BeginM_T1": [number],   /* ? */
                // "PriceT1": [number],     /* Price per kWh with Tariff1 in 0.1 cents per kWh*/
                // "MaxCurrT2": [number],   /* max current per pahse in tariff2 */
                // "BeginH_T2": 22,
                 // "BeginM_T2": 0,
                 // "PriceT2": [number],     /* Price per kWh with Tariff2 in 0.1cents*/
                // "RemoteCurr": [number],  /* current in A per phase as set by app control mode */
                // "SolarPrice": [number],  /* price for solar energy in 0.1cents per kWh */  
                // "ExcessNrg": [boolean],  /* if only excess energy should be used in energy manager mode */
                // "TMaxCurrT1": [number],
                // "TBeginH_T1": [number],   
                // "TBeginM_T1": [number],  
                // "TPriceT1": [number],
                // "TMaxCurrT2": [number],
                // "TBeginH_T2": [number],
                // "TBeginM_T2": [number],
                // "TPriceT2": [number],
                // "TRemoteCurr": [number],
                // "TSolarPrice": [number],
                // "TExcessNrg": [boolean],
                 // "HCCP": [string]         /* ? */
            });
        
          exec(abfrage_Statistics_Day, function(err, stdout, stderr) {
                if (err) {
                    log("Error: " + err,"warn"); return;
                    }
                var objects = JSON.parse(stdout);
               setState("javascript.0.Amtron.Statistics.Day.ChgNrg",objects.ChgNrg, true); /* how much energy the wallbox has charged in Wh */
            });
        
         exec(abfrage_Statistics_Week, function(err, stdout, stderr) {
                if (err) {
                    log("Error: " + err,"warn"); return;
                    }
                var objects = JSON.parse(stdout);
               setState("javascript.0.Amtron.Statistics.Week.ChgNrg",objects.ChgNrg, true); /* how much energy the wallbox has charged in Wh */
            });
        
         exec(abfrage_Statistics_Month, function(err, stdout, stderr) {
                if (err) {
                    log("Error: " + err,"warn"); return;
                    }
                var objects = JSON.parse(stdout);
               setState("javascript.0.Amtron.Statistics.Month.ChgNrg",objects.ChgNrg, true); /* how much energy the wallbox has charged in Wh */
            });
        
         exec(abfrage_Statistics_Year, function(err, stdout, stderr) {
                if (err) {
                    log("Error: " + err,"warn"); return;
                    }
                var objects = JSON.parse(stdout);
               setState("javascript.0.Amtron.Statistics.Year.ChgNrg",objects.ChgNrg, true); /* how much energy the wallbox has charged in Wh */
            });
        
             exec(abfrage_Statistics_Annual, function(err, stdout, stderr) {
                if (err) {
                    log("Error: " + err,"warn"); return;
                    }
                var objects = JSON.parse(stdout);
               setState("javascript.0.Amtron.Statistics.Annual.ChgNrg",objects.ChgNrg, true); /* how much energy the wallbox has charged in Wh */
            });
        log("Alle AMTRON-Abfragen erfolgreich")
        }
        
        schedule("*/5 * * * * *", abfrageStarten);
        abfrageStarten(); // bei Scriptstart
        

        Danke und viele Grüße!

        BluppyleinB Offline
        BluppyleinB Offline
        Bluppylein
        schrieb am zuletzt editiert von
        #7

        @marc_st
        Hallo Marc,
        super ist dein Script und das auslesen klappt schon super. Da ich das ganze gerne mit meiner PV etwas steuern will weil das Ding wie es scheint nicht MODBUS kann obwohl Mennekes damit wirkt. Leider geht nur SMES in der Oberfläche.

        Nun würde ich gerne den Charge Mode je nach Strom meiner PV ändern.
        Wie ich sehe setzt du ja hier javascript.0.Amtron.DevInfo.ChgState den Status. Wenn ich ihn von Charged auf Paused setze nimmt er das leider nicht. Hast du eine Idee wo mein Denkfehler ist. Nach der nächsten Abfrage ist es wieder auf Charged gesetzt.

        Das Blockly schreibe ich mir später gerne nur muss ich verstehen wie ich den Modus setzen kann.

        ? Chris_CarryflagC 2 Antworten Letzte Antwort
        0
        • BluppyleinB Bluppylein

          @marc_st
          Hallo Marc,
          super ist dein Script und das auslesen klappt schon super. Da ich das ganze gerne mit meiner PV etwas steuern will weil das Ding wie es scheint nicht MODBUS kann obwohl Mennekes damit wirkt. Leider geht nur SMES in der Oberfläche.

          Nun würde ich gerne den Charge Mode je nach Strom meiner PV ändern.
          Wie ich sehe setzt du ja hier javascript.0.Amtron.DevInfo.ChgState den Status. Wenn ich ihn von Charged auf Paused setze nimmt er das leider nicht. Hast du eine Idee wo mein Denkfehler ist. Nach der nächsten Abfrage ist es wieder auf Charged gesetzt.

          Das Blockly schreibe ich mir später gerne nur muss ich verstehen wie ich den Modus setzen kann.

          ? Offline
          ? Offline
          Ein ehemaliger Benutzer
          schrieb am zuletzt editiert von
          #8

          Hi,
          I am just beginning to connect to my Amtron 11 c2 an am enthusiastic when I see this hier. I imported the script and start testing. I only have 2 Questions:

          1. Where do I find the device key ?
          2. Is the port always 25000 ?
            I would appreciate a little help on this....

          Thanks
          BJ

          Chris_CarryflagC 1 Antwort Letzte Antwort
          0
          • ? Ein ehemaliger Benutzer

            Hi,
            I am just beginning to connect to my Amtron 11 c2 an am enthusiastic when I see this hier. I imported the script and start testing. I only have 2 Questions:

            1. Where do I find the device key ?
            2. Is the port always 25000 ?
              I would appreciate a little help on this....

            Thanks
            BJ

            Chris_CarryflagC Offline
            Chris_CarryflagC Offline
            Chris_Carryflag
            schrieb am zuletzt editiert von
            #9

            @jobehe

            1. The DevKey required for each request can be found in the documents you received with your Wallbox. In the document it is called APP-Pin.

            2. Yes.

            For more information have a look at GitHub: https://github.com/lephisto/amtron

            1 Antwort Letzte Antwort
            0
            • BluppyleinB Bluppylein

              @marc_st
              Hallo Marc,
              super ist dein Script und das auslesen klappt schon super. Da ich das ganze gerne mit meiner PV etwas steuern will weil das Ding wie es scheint nicht MODBUS kann obwohl Mennekes damit wirkt. Leider geht nur SMES in der Oberfläche.

              Nun würde ich gerne den Charge Mode je nach Strom meiner PV ändern.
              Wie ich sehe setzt du ja hier javascript.0.Amtron.DevInfo.ChgState den Status. Wenn ich ihn von Charged auf Paused setze nimmt er das leider nicht. Hast du eine Idee wo mein Denkfehler ist. Nach der nächsten Abfrage ist es wieder auf Charged gesetzt.

              Das Blockly schreibe ich mir später gerne nur muss ich verstehen wie ich den Modus setzen kann.

              Chris_CarryflagC Offline
              Chris_CarryflagC Offline
              Chris_Carryflag
              schrieb am zuletzt editiert von
              #10

              @bluppylein
              Hi
              Änderungen an der Wallbox kannst du nicht direkt über die Datenpunkte vornehmen. Das Script von Marc liest ja lediglich die Werte aus der Wallbox aus und schreibt sie in die Datenpunkte in ioBroker. Wenn du die Werte für den ChargeState in der Wallbox ändern willst, dann musst du einen HTTP-Request an die Wallbox absetzen. Als Blockly kann das für das Aktivieren des ChargeState "Pause" dann so aussehen (damit das Beispiel funktioniert, musst du im Beispielscode noch die IP-Adresse deiner Wallbox und deinen DevKey eintragen, wo ich die XXX gemacht habe):

              <block xmlns="https://developers.google.com/blockly/xml" type="exec" id="qpATwLXq@}vCo$g_Dpjf" x="337.40138244628906" y="1537.8000183105469">
                <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation>
                <field name="WITH_STATEMENT">FALSE</field>
                <field name="LOG"></field>
                <value name="COMMAND">
                  <shadow type="text" id="tXT5/FPo;Ryu9Q+qG*sv">
                    <field name="TEXT">text</field>
                  </shadow>
                  <block type="text" id="*+%7zDpR5sdcNbqC)yY=">
                    <field name="TEXT">curl -X POST --header 'Content-Type: application/json' -d '{"Permanent": true,"RemoteCurr": 6,"AutoChg": null,"ChgState": "Pause","Uid": "00000000"}' 'http://192.xxx.xxx.xxx:25000/MHCP/1.0/ChargeData?DevKey=XXXXXX'</field>
                  </block>
                </value>
              </block>
              
              ? 1 Antwort Letzte Antwort
              0
              • Chris_CarryflagC Chris_Carryflag

                @bluppylein
                Hi
                Änderungen an der Wallbox kannst du nicht direkt über die Datenpunkte vornehmen. Das Script von Marc liest ja lediglich die Werte aus der Wallbox aus und schreibt sie in die Datenpunkte in ioBroker. Wenn du die Werte für den ChargeState in der Wallbox ändern willst, dann musst du einen HTTP-Request an die Wallbox absetzen. Als Blockly kann das für das Aktivieren des ChargeState "Pause" dann so aussehen (damit das Beispiel funktioniert, musst du im Beispielscode noch die IP-Adresse deiner Wallbox und deinen DevKey eintragen, wo ich die XXX gemacht habe):

                <block xmlns="https://developers.google.com/blockly/xml" type="exec" id="qpATwLXq@}vCo$g_Dpjf" x="337.40138244628906" y="1537.8000183105469">
                  <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation>
                  <field name="WITH_STATEMENT">FALSE</field>
                  <field name="LOG"></field>
                  <value name="COMMAND">
                    <shadow type="text" id="tXT5/FPo;Ryu9Q+qG*sv">
                      <field name="TEXT">text</field>
                    </shadow>
                    <block type="text" id="*+%7zDpR5sdcNbqC)yY=">
                      <field name="TEXT">curl -X POST --header 'Content-Type: application/json' -d '{"Permanent": true,"RemoteCurr": 6,"AutoChg": null,"ChgState": "Pause","Uid": "00000000"}' 'http://192.xxx.xxx.xxx:25000/MHCP/1.0/ChargeData?DevKey=XXXXXX'</field>
                    </block>
                  </value>
                </block>
                
                ? Offline
                ? Offline
                Ein ehemaliger Benutzer
                schrieb am zuletzt editiert von
                #11

                @chris_carryflag

                Danke für die Kommentare, ich habe lediglich ein Passwort für das web-ui, keine pins in der Doku :-( Kann es sein, dass die "Amtron 11 c2" ohne "xtra" u.ä. keine OCPP Schnittstelle hat? Die Modbus Schnittstelle kann ich erreichen, das reicht um ein paar Werte auszulesen.

                Ich werde mich mal beim Lieferanten erkundigen. Die Infos sind da nicht so eindeutig. Im Web-ui ist von den OCPP-Zählern die Rede, die Integration in ein EMS wird versprochen und es ist von Funktionen die später durch updates verfügbar sein sollen die Rede.....

                D 1 Antwort Letzte Antwort
                0
                • M Marc_St

                  Liebes Forum,

                  nach einigem Experimentieren hier ein Script, welches meine Mennekes Amtron Xtra 22 c2 Wallbox ausliest. Der Code ist nicht elegant, sondern sehr modular und übersichtlich gestaltet. Bitte nicht lachen - es ging mir erst einmal darum, dass es läuft.

                  Zunächst möchte ich das einfach Teilen. Dann geht es mir auch um einen Adapter - dass es den nicht gab, hatte mich geärgert und zur Skriptentwicklung getrieben. Es gibt bis heute keinen Adapter. Deshalb meine Folgefrage:

                  Wie aufwendig wäre es, aus so einem Skript einen Adapter zu erstellen? Im Grunde müsste man nur PIN und IP-Adresse als Parameter übergeben ...

                  // Basierend auf https://github.com/lephisto/amtron
                  
                  var abfrage_DevInfo = "curl -H 'Accept: application/json' http://10.0.1.28:25000/MHCP/1.0/DevInfo?DevKey=999999";
                  var abfrage_ChargeData = "curl -H 'Accept: application/json' http://10.0.1.28:25000/MHCP/1.0/ChargeData?DevKey=999999";
                  var abfrage_Statistics_Day = "curl -H 'Accept: application/json' http://10.0.1.28:25000/MHCP/1.0/Statistics/Day?DevKey=999999";
                  var abfrage_Statistics_Week = "curl -H 'Accept: application/json' http://10.0.1.28:25000/MHCP/1.0/Statistics/Week?DevKey=999999";
                  var abfrage_Statistics_Month = "curl -H 'Accept: application/json' http://10.0.1.28:25000/MHCP/1.0/Statistics/Month?DevKey=999999";
                  var abfrage_Statistics_Year = "curl -H 'Accept: application/json' http://10.0.1.28:25000/MHCP/1.0/Statistics/Year?DevKey=999999";
                  var abfrage_Statistics_Annual = "curl -H 'Accept: application/json' http://10.0.1.28:25000/MHCP/1.0/Statistics/Annual?DevKey=999999";
                  
                  // DevInfo: 
                  createState('javascript.0.Amtron.DevInfo.SN', 0);
                  
                  createState('javascript.0.Amtron.DevInfo.DevMode', 0);
                  createState('javascript.0.Amtron.DevInfo.ChgState', 0);
                  
                  createState('javascript.0.Amtron.DevInfo.Phases', 0);
                  
                  createState('javascript.0.Amtron.DevInfo.MaxCurr', 0, {unit: 'A'});
                  createState('javascript.0.Amtron.DevInfo.MaxPwr', 0, {unit: 'W'});
                  createState('javascript.0.Amtron.DevInfo.MaxCurrWb', 0, {unit: 'A'});
                  
                  // ChargeData
                  
                  createState('javascript.0.Amtron.ChargeData.ChgDuration', 0, {unit: 's'});
                  createState('javascript.0.Amtron.ChargeData.ChgNrg', 0, {unit: 'Wh'});
                  createState('javascript.0.Amtron.ChargeData.NrgDemand', 0, {unit: 'Wh'});
                  
                  createState('javascript.0.Amtron.ChargeData.ActPwr', 0, {unit: 'W'});
                  createState('javascript.0.Amtron.ChargeData.ActCurr', 0, {unit: 'A'});
                  
                  // Statistics_Day
                  createState('javascript.0.Amtron.Statistics.Day.ChgNrg', 0, {unit: 'Wh'});
                  
                  // Statistics_Week
                  createState('javascript.0.Amtron.Statistics.Week.ChgNrg', 0, {unit: 'Wh'});
                  
                  // Statistics_Month
                  createState('javascript.0.Amtron.Statistics.Month.ChgNrg', 0, {unit: 'Wh'});
                  
                  // Statistics_Year
                  createState('javascript.0.Amtron.Statistics.Year.ChgNrg', 0, {unit: 'Wh'});
                  
                  // Statistics_Annual
                  createState('javascript.0.Amtron.Statistics.Annual.ChgNrg', 0, {unit: 'Wh'});
                  
                  function abfrageStarten() {
                      exec(abfrage_DevInfo, function(err, stdout, stderr) {
                          if (err) {
                              log("Error: " + err,"warn"); return;
                              }
                          var objects = JSON.parse(stdout);
                  
                          //       var DevName = objects.DevName.DevName;        /* Name of the device */
                          //       var LocTime = objects.LocTime;        /* timestamp */
                          //       var Summer = objects.Summer;        /* Is summer time? */
                          //       var Tz = objects.Tz;             /* timezone offset in minutes */
                          //       var ItemNo = objects.ItemNo;         /* item number */           
                          setState("javascript.0.Amtron.DevInfo.SN",objects.Sn.toFixed(0), true); /* Serial Number */
                          //        var Hcc3 = objects.Hcc3          /* Info about the HCC3 (main controller) */
                          //        var Hmi = objects.Hmi            /* Info about hardware software? */
                          //        var Rfid = objects.Rfid          /* Info about RFID? */
                          //        var Wifi = objects.Wifi           /* WiFi module version? */
                          //        var FixedVehCosts = objects.FixedVehCosts  /* Fixed vehicle costs as specified in the app */
                          //        var OldVehCosts = objects.OldVehCosts    /* OldVehicle costs? */
                          //        var Color = objects.Color         /* ? */
                          setState("javascript.0.Amtron.DevInfo.DevMode",objects.DevMode, true);  /* Curent charging mode */
                          setState("javascript.0.Amtron.DevInfo.ChgState",objects.ChgState, true); /* Current charging state */
                          //        var WifiOn = objects.WifiOn       /* true if WiFi is on */
                          //        var AutoChg = objects.AutoChg       /* true if auto-start charging is enabled*/
                          //        var ChgContinue = objects.ChgContinue   /* true if charging should continue after power outage */
                          //        var Err = objects.Err            /* current error code, 0 if there is none */
                          //        var Battery = objects.Battery        /* EV battery capacity for EnergyManager in Wh*/
                          setState("javascript.0.Amtron.DevInfo.Phases",objects.Phases.toFixed(0), true); /* number of phases connected */
                          //        var Cable = objects.Cable         /* true if cable is connected/installed? */
                          //        var Auth = objects.Auth          /* true if auth by rfid is enabled? */
                          //        var DsoEnabled = objects.DsoEnabled    /* ? */
                          //        var EmEnabled = objects.EmEnabled     /* true if EnergyManager mode is enabled */
                          setState("javascript.0.Amtron.DevInfo.MaxCurr",objects.MaxCurr.toFixed(0), true); /* currently set max. charging current per phase in A*/
                          setState("javascript.0.Amtron.DevInfo.MaxPwr",objects.MaxPwr.toFixed(0), true); /* currently set max. charging power in W*/     
                          setState("javascript.0.Amtron.DevInfo.MaxCurrWb",objects.MaxCurrWb.toFixed(0), true); /* upper limit for charging current per phase in A*/    
                      });
                  
                      exec(abfrage_ChargeData, function(err, stdout, stderr) {
                          if (err) {
                              log("Error: " + err,"warn"); return;
                              }
                          var objects = JSON.parse(stdout);
                  
                          // "ChgState": [EnumChargingState],
                          // "Tariff": [string],      /* Current tariff */
                          // "Price": [number],       /* Price per kWh with current tariff in 0.1 cents per kWh */
                          // "Uid": [string],         /* UserId? */
                          setState("javascript.0.Amtron.ChargeData.ChgDuration",objects.ChgDuration, true); /* how long the wallbox is charging the EV */
                          setState("javascript.0.Amtron.ChargeData.ChgNrg",objects.ChgNrg.toFixed(0), true); /* how much energy the wallbox has charged in Wh */
                          setState("javascript.0.Amtron.ChargeData.NrgDemand",objects.NrgDemand.toFixed(0), true); /* energy demand of the vehicle in Wh */
                          // "Solar": [number],       /* maybe percentage of solar energy for current charge */
                          // "EmTime": [number],      /* time in which the vehicle has to be fully charged, in Energy Manager mode in minutes*/
                          // "RemTime": [number],     /* time remaining of the set EmTime in minutes */
                          setState("javascript.0.Amtron.ChargeData.ActPwr",objects.ActPwr, true); /* current power draw of vehicle */
                          setState("javascript.0.Amtron.ChargeData.ActCurr",objects.ActCurr.toFixed(0), true); /* currently set max. charging current per phase in A*/
                          // "MaxCurrT1": [number],   /* max current per phase in tariff1 */
                          // "BeginH_T1": [number],   /* ? */
                          // "BeginM_T1": [number],   /* ? */
                          // "PriceT1": [number],     /* Price per kWh with Tariff1 in 0.1 cents per kWh*/
                          // "MaxCurrT2": [number],   /* max current per pahse in tariff2 */
                          // "BeginH_T2": 22,
                           // "BeginM_T2": 0,
                           // "PriceT2": [number],     /* Price per kWh with Tariff2 in 0.1cents*/
                          // "RemoteCurr": [number],  /* current in A per phase as set by app control mode */
                          // "SolarPrice": [number],  /* price for solar energy in 0.1cents per kWh */  
                          // "ExcessNrg": [boolean],  /* if only excess energy should be used in energy manager mode */
                          // "TMaxCurrT1": [number],
                          // "TBeginH_T1": [number],   
                          // "TBeginM_T1": [number],  
                          // "TPriceT1": [number],
                          // "TMaxCurrT2": [number],
                          // "TBeginH_T2": [number],
                          // "TBeginM_T2": [number],
                          // "TPriceT2": [number],
                          // "TRemoteCurr": [number],
                          // "TSolarPrice": [number],
                          // "TExcessNrg": [boolean],
                           // "HCCP": [string]         /* ? */
                      });
                  
                    exec(abfrage_Statistics_Day, function(err, stdout, stderr) {
                          if (err) {
                              log("Error: " + err,"warn"); return;
                              }
                          var objects = JSON.parse(stdout);
                         setState("javascript.0.Amtron.Statistics.Day.ChgNrg",objects.ChgNrg, true); /* how much energy the wallbox has charged in Wh */
                      });
                  
                   exec(abfrage_Statistics_Week, function(err, stdout, stderr) {
                          if (err) {
                              log("Error: " + err,"warn"); return;
                              }
                          var objects = JSON.parse(stdout);
                         setState("javascript.0.Amtron.Statistics.Week.ChgNrg",objects.ChgNrg, true); /* how much energy the wallbox has charged in Wh */
                      });
                  
                   exec(abfrage_Statistics_Month, function(err, stdout, stderr) {
                          if (err) {
                              log("Error: " + err,"warn"); return;
                              }
                          var objects = JSON.parse(stdout);
                         setState("javascript.0.Amtron.Statistics.Month.ChgNrg",objects.ChgNrg, true); /* how much energy the wallbox has charged in Wh */
                      });
                  
                   exec(abfrage_Statistics_Year, function(err, stdout, stderr) {
                          if (err) {
                              log("Error: " + err,"warn"); return;
                              }
                          var objects = JSON.parse(stdout);
                         setState("javascript.0.Amtron.Statistics.Year.ChgNrg",objects.ChgNrg, true); /* how much energy the wallbox has charged in Wh */
                      });
                  
                       exec(abfrage_Statistics_Annual, function(err, stdout, stderr) {
                          if (err) {
                              log("Error: " + err,"warn"); return;
                              }
                          var objects = JSON.parse(stdout);
                         setState("javascript.0.Amtron.Statistics.Annual.ChgNrg",objects.ChgNrg, true); /* how much energy the wallbox has charged in Wh */
                      });
                  log("Alle AMTRON-Abfragen erfolgreich")
                  }
                  
                  schedule("*/5 * * * * *", abfrageStarten);
                  abfrageStarten(); // bei Scriptstart
                  

                  Danke und viele Grüße!

                  R Offline
                  R Offline
                  ralek
                  schrieb am zuletzt editiert von
                  #12

                  @marc_st Hallo Marc, auch von mir herzlichen Dank, das Skript funktioniert auf Anhieb prima zum Auslesen meiner Mennekes Amtron Premium 22C2. Die Box verwaltet mehrere RFIDs und ich kann auch in der dazugehörigen App die Verbräuche der einzelnen Karten anzeigen. Lässt sich die Information auch über ein Skript auslesen? Hast Du da eventuell schon etwas dazu geschrieben oder eine Idee? Optimal wäre natürlich die Whitelist einzulesen, da sind die Kartennummern mit Nutzernamen hinterlegt. Dann je Karte aus der Whitelist den Verbrauch einlesen, und das ganze für definierte Zeiträume, zB. heute, gestern, letzte Woche, letzter Monat, aktuelles Jahr, letztes Jahr. Vllt. hat auch jmd anders dazu schon etwas gemacht, wäre für jede Info dankbar. Viele Grüsse Ralek

                  1 Antwort Letzte Antwort
                  0
                  • Rene_HMR Offline
                    Rene_HMR Offline
                    Rene_HM
                    Developer
                    schrieb am zuletzt editiert von
                    #13

                    Es gibt nun eine erste Version eines Amtron Wallbox-Adapters: https://forum.iobroker.net/topic/55023/adapter-amtron-wallbox

                    1 Antwort Letzte Antwort
                    0
                    • M Marc_St

                      @x-sven sagte in Wallbox Mennekes Amtron auslesen - Adapter aus Skript?:

                      @Marc_St
                      Hast Du eine Idee, wie man die Strombegrenzung als POST setzten könnte? (parameter RemoteCurr)
                      Ich werde aus den Hinweisen unter https://github.com/lephisto/amtron/blob/master/docs/api/ChargeData/post.md nicht richtig schlau. Wie würde so ein post mittels curl - Aufruf aussehen?

                      Ja, es ist dort nicht toll erklärt. Hier in paar Beispiele:

                      Stromstärke auf 6 Ampere stellen:

                      curl -d '{ "Permanent": true, "RemoteCurr": 6, "AutoChg": null, "ChgState": null, "Uid": null}' -H "Content-Type: application/json" -X POST http://10.0.1.28:25000/MHCP/1.0/ChargeData?DevKey=XXXXXX
                      

                      Ladevorgang pausieren

                      curl -d '{ "Permanent": true, "RemoteCurr": 6, "AutoChg": null, "ChgState": "Pause", "Uid": null}' -H "Content-Type: application/json" -X POST http://10.0.1.28:25000/MHCP/1.0/ChargeData?DevKey=XXXXXX
                      

                      Ladevorgang fortsetzen:

                      curl -d '{ "Permanent": true, "RemoteCurr": 6, "AutoChg": null, "ChgState": "Continue", "Uid": null}' -H "Content-Type: application/json" -X POST http://10.0.1.28:25000/MHCP/1.0/ChargeData?DevKey=XXXXXX
                      

                      Viele Grüße!

                      J Offline
                      J Offline
                      jrichl
                      schrieb am zuletzt editiert von
                      #14

                      @marc_st

                      Hallo,

                      laut der Doku gibt es für die Steuerung der Wallbox die folgenden POST ChgState ( Continue, Pause, Start, Terminate). Wenn ich mein Auto an die Wallbox nur anstecke befindet sich die Wallbox aber im ChgState "StandbyAuthorize", zumindest wird dieser über GET ausgelesen, und über GET bekommt man die folgenden ChgState ( Idle, Charging, Paused, StandbyConnect, StandbyAuthorize, Terminated).

                      Ich stehe also vor der Herausforderung in den Idle,Charging oder Paused Modus zu kommen. Mit dem Befehl

                      curl -d '{ "Permanent": true, "RemoteCurr": 6, "AutoChg": null, "ChgState": "Continue", "Uid": null}' -H "Content-Type: application/json" -X POST http://10.0.1.28:25000/MHCP/1.0/ChargeData?DevKey=XXXXXX
                      
                      

                      kann ich zwar einen bereits gestarteten und pausierten Ladevorgang wieder fortsetzen aber leider keine neuen Ladevorgang starten.

                      Und leider funktioniert auch "ChgState": "Start" nicht.

                      Hat jemand also eine Ahnung wie man bei der Mennekes Amtron den Ladevorgang grundsätzlich über die API starten kann.

                      Um das ganze in einem Skript mit Variablen zu nutzen, ist es darüber hinaus noch notwendig diverse zusätzliche Anführungszeichen zu nutzen - siehe nachfolgendes Beispiel, falls es jemand automatisieren möchte.

                       var ChargeMod = "curl -d '{ \"Permanent\": true, \"RemoteCurr\": "+Current+", \"AutoChg\": null, \"ChgState\": \""+WBMod+"\", \"Uid\": null}' -H \"Content-Type: application/json\" -X POST http://"+ip_wb+":25000/MHCP/1.0/ChargeData?DevKey="+devkey+""; /* Ladestrom einstellen */
                      

                      Danke und viele Grüße

                      Rene_HMR 1 Antwort Letzte Antwort
                      0
                      • J jrichl

                        @marc_st

                        Hallo,

                        laut der Doku gibt es für die Steuerung der Wallbox die folgenden POST ChgState ( Continue, Pause, Start, Terminate). Wenn ich mein Auto an die Wallbox nur anstecke befindet sich die Wallbox aber im ChgState "StandbyAuthorize", zumindest wird dieser über GET ausgelesen, und über GET bekommt man die folgenden ChgState ( Idle, Charging, Paused, StandbyConnect, StandbyAuthorize, Terminated).

                        Ich stehe also vor der Herausforderung in den Idle,Charging oder Paused Modus zu kommen. Mit dem Befehl

                        curl -d '{ "Permanent": true, "RemoteCurr": 6, "AutoChg": null, "ChgState": "Continue", "Uid": null}' -H "Content-Type: application/json" -X POST http://10.0.1.28:25000/MHCP/1.0/ChargeData?DevKey=XXXXXX
                        
                        

                        kann ich zwar einen bereits gestarteten und pausierten Ladevorgang wieder fortsetzen aber leider keine neuen Ladevorgang starten.

                        Und leider funktioniert auch "ChgState": "Start" nicht.

                        Hat jemand also eine Ahnung wie man bei der Mennekes Amtron den Ladevorgang grundsätzlich über die API starten kann.

                        Um das ganze in einem Skript mit Variablen zu nutzen, ist es darüber hinaus noch notwendig diverse zusätzliche Anführungszeichen zu nutzen - siehe nachfolgendes Beispiel, falls es jemand automatisieren möchte.

                         var ChargeMod = "curl -d '{ \"Permanent\": true, \"RemoteCurr\": "+Current+", \"AutoChg\": null, \"ChgState\": \""+WBMod+"\", \"Uid\": null}' -H \"Content-Type: application/json\" -X POST http://"+ip_wb+":25000/MHCP/1.0/ChargeData?DevKey="+devkey+""; /* Ladestrom einstellen */
                        

                        Danke und viele Grüße

                        Rene_HMR Offline
                        Rene_HMR Offline
                        Rene_HM
                        Developer
                        schrieb am zuletzt editiert von
                        #15

                        @jrichl sagte in Wallbox Mennekes Amtron auslesen - Adapter aus Skript?:

                        StandbyAuthorize

                        Kann es sein, dass die Box nicht automatisch startet, weil du den Ladevorgang authorisieren musst? In meinem Fall muss ich erst den RFID-Key auslesen lassen, bevor die Box den Ladevorgang startet...

                        J 1 Antwort Letzte Antwort
                        0
                        • Rene_HMR Rene_HM

                          @jrichl sagte in Wallbox Mennekes Amtron auslesen - Adapter aus Skript?:

                          StandbyAuthorize

                          Kann es sein, dass die Box nicht automatisch startet, weil du den Ladevorgang authorisieren musst? In meinem Fall muss ich erst den RFID-Key auslesen lassen, bevor die Box den Ladevorgang startet...

                          J Offline
                          J Offline
                          jrichl
                          schrieb am zuletzt editiert von
                          #16

                          @rene_hm

                          meine Box hat zwar eigentlich kein RFID, aber wie liest du den Key aus?

                          Rene_HMR 1 Antwort Letzte Antwort
                          0
                          • J jrichl

                            @rene_hm

                            meine Box hat zwar eigentlich kein RFID, aber wie liest du den Key aus?

                            Rene_HMR Offline
                            Rene_HMR Offline
                            Rene_HM
                            Developer
                            schrieb am zuletzt editiert von
                            #17

                            @jrichl nein, das geht nur an der Box. Ich stecke das Ladekabel an, authentifiziere mich mit dem RFID (ich halte das RFID-Label an die Box) und erst dann kann in meinem Fall das SMA SunnyPortal / SunnyHomemanager die Box zum Laden starten. Gestartet wird dann durch setzen eines maximalen Ladestroms in Abhängigkeit der PV-Leistung... Ohne die Authentifizierung kann das Laden nicht starten.
                            Das kann aber an anderen Typen anders sein...

                            1 Antwort Letzte Antwort
                            0
                            • ? Ein ehemaliger Benutzer

                              @chris_carryflag

                              Danke für die Kommentare, ich habe lediglich ein Passwort für das web-ui, keine pins in der Doku :-( Kann es sein, dass die "Amtron 11 c2" ohne "xtra" u.ä. keine OCPP Schnittstelle hat? Die Modbus Schnittstelle kann ich erreichen, das reicht um ein paar Werte auszulesen.

                              Ich werde mich mal beim Lieferanten erkundigen. Die Infos sind da nicht so eindeutig. Im Web-ui ist von den OCPP-Zählern die Rede, die Integration in ein EMS wird versprochen und es ist von Funktionen die später durch updates verfügbar sein sollen die Rede.....

                              D Offline
                              D Offline
                              delia
                              schrieb am zuletzt editiert von
                              #18

                              Hallo,

                              hast du etwas rausgefunden? Ich stehe vor demselben Problem...

                              1 Antwort Letzte Antwort
                              0
                              Antworten
                              • In einem neuen Thema antworten
                              Anmelden zum Antworten
                              • Älteste zuerst
                              • Neuste zuerst
                              • Meiste Stimmen


                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              628

                              Online

                              32.5k

                              Benutzer

                              81.8k

                              Themen

                              1.3m

                              Beiträge
                              Community
                              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                              ioBroker Community 2014-2025
                              logo
                              • Anmelden

                              • Du hast noch kein Konto? Registrieren

                              • Anmelden oder registrieren, um zu suchen
                              • Erster Beitrag
                                Letzter Beitrag
                              0
                              • Home
                              • Aktuell
                              • Tags
                              • Ungelesen 0
                              • Kategorien
                              • Unreplied
                              • Beliebt
                              • GitHub
                              • Docu
                              • Hilfe