Ankündigung

Einklappen
Keine Ankündigung bisher.

Json mit HSL2.0 senden, Pycharm klappt, Homeserver nicht!

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    HS/FS Json mit HSL2.0 senden, Pycharm klappt, Homeserver nicht!

    Hi,
    ich habe Sven jetzt glaube ich genug genervt, aber ich komme gerade nicht weiter.
    Ich habe mir eine Warp3 angeschafft und diese kann Phasenumschaltung nur via deren API, was JSON ist.
    Per Curl kann ich den Wert senden, also heute den ganzen Tag damit verbracht es via Python hin zu kriegen und via Pycharm klappt es auch. Aber den gleichen Code dann in den HS kopiert, führt natürlich zu gar nichts. Ich wollte erst einmal den kompletten JSON Wert senden und diesen dann zerlegen und mit Variablen füllbar machen.
    Ich dachte eigentlich keine große Sache, wenn es in Pycharm geht und mich dann voran tasten kann..
    also dieser Code klappt in Pycharm:
    import requests
    import json

    url = "http://192.168.1.160/power_manager/config"
    payload = {
    "enabled": True,
    "phase_switching_mode": 1,
    "excess_charging_enable": False,
    "default_mode": 1,
    "meter_slot_grid_power": 1,
    "target_power_from_grid": 0,
    "guaranteed_power": 1380,
    "cloud_filter_mode": 2
    }

    headers = {'Content-Type': 'application/json'}

    try:
    response = requests.post(url, data=json.dumps(payload), headers=headers)
    response.raise_for_status() # Raise an HTTPError for bad responses (4xx or 5xx)
    print("Status Code:", response.status_code)
    print("Response Text:", response.text)
    except requests.exceptions.RequestException as e:
    print("An error occurred:", e)​
    Also habe ich das in den HSL2.0 Generator übernommen, so wie ich es verstehe, aber das führt leider zu nichts:
    # coding: utf-8
    import requests
    import json

    ##!!!!############################################ ################################################## ####
    #### Own written code can be placed above this commentblock . Do not change or delete commentblock! ####
    ################################################## ################################################## ####
    ##** Code created by generator - DO NOT CHANGE! **##

    class Warp3_Phase19001(hsl20_4.BaseModule):

    def __init__(self, homeserver_context):
    hsl20_4.BaseModule.__init__(self, homeserver_context, "Warp3")
    self.FRAMEWORK = self._get_framework()
    self.LOGGER = self._get_logger(hsl20_4.LOGGING_NONE,())
    self.PIN_I_IP_WALLBOX=1
    self.PIN_I_TRIGGER_1P=2
    self.PIN_I_TRIGGER_3P=3
    self.PIN_O_DEBUG=1

    ################################################## ################################################## ####
    #### Own written code can be placed after this commentblock . Do not change or delete commentblock! ####
    ################################################## #################################################! !!##


    def on_input_value(self, index, value):
    if index == self.PIN_I_TRIGGER_1P:
    url = "http://192.168.1.160/power_manager/config"
    payload = {
    "enabled": True,
    "phase_switching_mode": 1,
    "excess_charging_enable": False,
    "default_mode": 1,
    "meter_slot_grid_power": 1,
    "target_power_from_grid": 0,
    "guaranteed_power": 1380,
    "cloud_filter_mode": 2
    }

    headers = {'Content-Type': 'application/json'}

    try:
    response = requests.post(url, data=json.dumps(payload), headers=headers)
    response.raise_for_status() # Raise an HTTPError for bad responses (4xx or 5xx)
    self.set_output_value(self.PIN_O_DEBUG, response)

    if index == self.PIN_I_TRIGGER_3P:
    url = "http://192.168.1.160/power_manager/config"
    payload = {
    "enabled": True,
    "phase_switching_mode": 2,
    "excess_charging_enable": False,
    "default_mode": 1,
    "meter_slot_grid_power": 1,
    "target_power_from_grid": 0,
    "guaranteed_power": 1380,
    "cloud_filter_mode": 2
    }

    headers = {'Content-Type': 'application/json'}

    try:
    response = requests.post(url, data=json.dumps(payload), headers=headers)
    response.raise_for_status() # Raise an HTTPError for bad responses (4xx or 5xx)
    self.set_output_value(self.PIN_O_DEBUG, response)​
    Kann mich evtl. bitte wer treten, in welche Richtung ich da jetzt Fehler suchen könnte?
    Dieser Beitrag enthält keine Spuren von Sarkasmus... ich bin einfach so?!

    #2
    Okay, ich glaube im forum das zu posten liest sich blöd. Ich mache später ein github. Sorry, Birne gerade hohl.
    Dieser Beitrag enthält keine Spuren von Sarkasmus... ich bin einfach so?!

    Kommentar


      #3
      Okay, das ganze ist etwas hübscher findet man jetzt hier in Github.
      Einmal den funktionierenden Pycharm Teil: https://github.com/BadSmiley0815/Jso...b/main/main.py
      und den nicht funktionierenden Logikbaustein: https://github.com/BadSmiley0815/Jso...Warp3-Phase.py

      Mein Problem ist aktuell, wie setze ich zur Fehlersuche an? Einmal teste ich den Baustein in einer VM, da fällt dann sowas dabei heraus:
      grafik.png

      und im Debug sieht es nicht viel besser aus:
      grafik.png

      man könnte meinen, mein Monitor ist nicht breit genug für die Fehlermeldungen.

      Hat Niemand erbarmen mit mir? Ich kann auch gerne ins Anfänger Forum damit gehen?

      Nachtrag: ich forsche mal was das bedeutet "TypeError: 'long' object has no attribute '__getitem__"
      Zuletzt geändert von BadSmiley; 20.05.2024, 10:11.
      Dieser Beitrag enthält keine Spuren von Sarkasmus... ich bin einfach so?!

      Kommentar


        #4
        Auf den ersten Blick fällt mir auf, dass du `try:` ohne `except:` oder `finally:` benutzt. Ob das der Grund für den Fehler ist weiß ich aber ned - kenne das Framework nicht und hab mit Python 2 nie wirklich was zu tun gehabt 😬

        Kommentar


          #5
          Danke Meti! Ich stümpere als Blinder im Wald herum. Das ist so, als installieren Programmierer Elektroinstallationen und werden dann von den Elis hier im Forum angekackt. Darum bin ich für jeden Tritt, egal wie heftig echt dankbar. Ich kann nur lernen und nehme Niemanden einen bösen Ton übel.
          Dieser Beitrag enthält keine Spuren von Sarkasmus... ich bin einfach so?!

          Kommentar


            #6
            Wer try sagt muss auch except sagen oder finally.

            Guck mal bitte ins debug unter hsl2. Du hast hier nur die hsl1 Fehler. (2 wird in den 1 Kram included)

            die Zeilennummern passen nie auf das, was man gecodet hat. Aber unter debug/ liegt die Datei mit dem gluecode. Da dann mal reingucken.

            Kommentar


              #7
              Schaue dir gerne meinen JSON Baustein auf GitHub an. Ich habe da die komplette Bau- und Testumgebung drin, sofern du das Setup gem. Doku aufgesetzt hast. Außerdem sollte der Bausteine nahe kommen, was du vor hast.

              Ach ja: Haue deinen Code bei ChatGPT rein und frag warum er nicht klappt
              Logic Module for Gira Homeserver to parse jason files - En3rGy/11087_JSON-Parser

              Kommentar

              Lädt...
              X