kpoppel / homeassistant-novafos

Homeassistant wrapper around the Novafos KMD water metering data warehouse.
Apache License 2.0
10 stars 3 forks source link

Jeg får følgende fejl: Exception: <class 'simplejson.errors.JSONDecodeError'> #2

Closed KevinToftegaard closed 2 years ago

KevinToftegaard commented 2 years ago

Jeg får følgende fejl:

Logger: custom_components.novafos Source: custom_components/novafos/init.py:120 Integration: Novafos First occurred: 10:50:30 PM (1 occurrences) Last logged: 10:50:30 PM

Exception: <class 'simplejson.errors.JSONDecodeError'>

Alle sensorer kommer frem men med "Unknown". Jeg benytter Ringkøbing Skjern Forsyning: https://minforsyning-2.kmd.dk/Login?plant=686&utility=4

Har du en idé om hvad det kan skyldes? På forhånd tak.

kpoppel commented 2 years ago

Hej @KevinToftegaard

Kan jeg få dig til at sætte lidt debugging information på i din configuration.yaml:

logger: default: info logs: pynovafos.novafos: debug

Fejlen herover viser bare at et eller andet sted i modulet sker der en fejl. Med linjerne herover kommer der forhåbentlig lidt mere information om hvor.

KevinToftegaard commented 2 years ago

Beklager det lidt sene svar. Jeg er ikke verdensmester i det her, så det kan også være en eller anden dum fejl. Det er dog lykkedes mig, at installere dine andre integrationer :-).

Giver nedenstående mere mening?

2021-12-02 21:55:43 DEBUG (MainThread) [custom_components.novafos.sensor] Asked for state Novafos Water Total = None 2021-12-02 21:55:43 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=sensor.novafos_water_total, old_state=None, new_state=<state sensor.novafos_water_total=unknown; Metering date=None, metering_date=None, unit_of_measurement=m³, friendly_name=Novafos Water Total @ 2021-12-02T21:55:43.821210+01:00>>

2021-12-02 21:55:44 DEBUG (SyncWorker_4) [homeassistant.util.json] JSON file not found: /config/custom_components/novafos/translations/sensor.en.json

Kan det tænkes at det er forkert supplier id? Den er jeg nemlig meget usikker på.

kpoppel commented 2 years ago

Næh, den der er interessant. Der ligger en .../translations/en.json fil, men her ser det ud til at der ledes efter en "sensor.en.json". Det er virkelig svært at følge med Home Assistants meget aggressive tilgang til at ændre kompatibilitet gennem versionerne.

Det er et stykke tid siden jeg har set på det her plugin, fordi det virker fint hos mig selv. Jeg opdaterer heller ikke HA hele tiden, da der altid er noget nyt der går i stykker. Men jeg vil se på det når jeg får lidt tid til overs.

kpoppel commented 2 years ago

Jeg kan ikke reproducere denne her med HA 2021.11.5. Hvilken version er du på?

KevinToftegaard commented 2 years ago

Det sætter jeg meget pris på :-).

Home Assistant 2021.10.6

Det kan være, at jeg skal prøve at opdatere mit HA?

kpoppel commented 2 years ago

Ja, prøv det i første omgang. Jeg lavede en opdatering til at matche de nye ting med energi-panelet i denne uge, og den klager heller ikke over den der sprog-fil.

Sdahl1234 commented 2 years ago

Jeg har samme fejl og er på core-2021.12.0b6 Har virket før men husker ikke i hvilken version.

KevinToftegaard commented 2 years ago

Nu er jeg på Home Assistant 2021.11.5, og det virker desværre stadig ikke.

Jeg har prøvet at fjerne og installere det igen. Det er underligt for eloverblik og eforsyning virker fint.

kpoppel commented 2 years ago

Lidt noter til mig selv: Denne her har "sensor..json https://github.com/briis/hass-weatherflow/tree/main/custom_components/weatherflow/translations

Her tales om sensor-oversættelser: https://community.home-assistant.io/t/how-to-send-translation-arguments-to-the-translation-custom-integration/143965/3

Denne her nævner i README at sensor.<>.json er der, men Git repo indeholder dem ikke: https://github.com/CJNE/ha-myenergi?ref=pythonrepo.com

Det er meget forvirrende, specielt fordi eforsyning, eloverblik og denne, novafos, alle er skabt over den skabelon som eloverblik har oprindeligt.

"native_value" er under mistanke. L. 327: https://github.com/home-assistant/core/blob/dev/homeassistant/components/sensor/__init__.py og herfra "device_class" som måske trigger denne her "sensor.<>.json" fil skal eksistere.

def native_value() med en masse cast() her: https://github.com/home-assistant/core/blob/7711f9a39117af5cd15d81e0fc3582713df95c23/homeassistant/components/accuweather/sensor.py#L107

To løsninger?

  1. fjern device_class fra L49 i sensor.py
  2. opret sensor.en.json med indhold (?)

{ "state": { "???": { "???": "???", } }

Jeg aner ikke hvad der skal oversættes. "native value" er en 'float', så der er ikke noget at oversætte.

@KevinToftegaard , kan jeg få dig til at kommentere linje 49 ud i sensor.py? self._attr_device_class = DEVICE_CLASS_GAS

Det er lidt træls jeg ikke kan reproducere det her af gu'ved hvilken årsag.

Det fjerner efter sigende så sensoren fra energi-overblikket. Det er måske så helt fint.

Sdahl1234 commented 2 years ago

FYI: Jeg kom i tanke om at jeg havde ændret base_url for at få det til at virke. Den er jo selvfølgelig blevet overskrevet da der kom en ny version. Så jeg ændrede den igen til self._base_url = f'https://webtools.kmd.dk/wts/' og nu virker alt igen :-)

KevinToftegaard commented 2 years ago

Der ser ikke ud til at virke.

self._attr_device_class = DEVICE_CLASS_GAS

Efter genstart. Loggen: 2021-12-12 18:50:49 DEBUG (SyncWorker_2) [custom_components.novafos.sensor] Setting status for Novafos Water Total 2021-12-12 18:50:49 DEBUG (SyncWorker_2) [custom_components.novafos] Fetching data from Novafos 2021-12-12 18:50:49 WARNING (SyncWorker_2) [custom_components.novafos] Exception: <class 'simplejson.errors.JSONDecodeError'>

KevinToftegaard commented 2 years ago

Jeg gjorde som Sdahl1234 og nu virker det :-).

Kan det måske ha' noget at gøre med: "Vær opmærksom på at Ringkøbing-Skjern Forsyning pr. 1. august 2020 har skiftet til en ny version af minForsyning.".

kpoppel commented 2 years ago

Ah, ja det forklarer i hvert fald hvorfor jeg ikke kan reproducere fejlen. Men her er måske måden at gøre det på. Næste udfordring er så at måske automatisere at finde den korrekte base_url. Hvordan kom I frem til den nye? Hvis det nu kan fiskes ud maskinelt..

Sdahl1234 commented 2 years ago

Da jeg ikke kunne få det til at virke i sin tid så jeg i developertools i browseren og kunne se at de API kald havde et anden endpoint.

kpoppel commented 2 years ago

Ja, det er også sådan jeg fandt det oprindeligt. Det er jo mest en god taktik når endepunktet er stabilt :-) Jeg lukker issuet her. Om ikke andet kan andre se løsningen ovenfor, og måske finder jeg en smart måde at håndtere det på engang.