fhempy: rct_power (RCT-Power)

Begonnen von dominik, 10 Februar 2022, 20:20:12

Vorheriges Thema - Nächstes Thema

dominik

Ok, ich nehme mit:
- format mit aufnehmen
- defaults bleiben immer drin, ist das sinnvoll oder sollen diese komplett ersetzt werden?
- Error nicht im Reading: Sammel Reading mit alten Wert wird kritisch, weil da alle 10s was drangehängt wird. Womöglich einfach nur state setzen mit dem reading welches Probleme macht!?
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

chris_kmn

Zitat von: dominik am 11 Februar 2022, 08:25:53
Ok, ich nehme mit:
- format mit aufnehmen
- defaults bleiben immer drin, ist das sinnvoll oder sollen diese komplett ersetzt werden?
- Error nicht im Reading: Sammel Reading mit alten Wert wird kritisch, weil da alle 10s was drangehängt wird. Womöglich einfach nur state setzen mit dem reading welches Probleme macht!?

Ich denke dein Vorschlag für das Errorhandling ist ok. Mehr Infos sollte man dann ja im Logfile finden.

marvin78

Ich meinte damit ein "error" `Reading, in dem dann der letzte Fehler steht und wo er her kommt.

Allerdings wundere ich mich gerade, warum sehr häufig der Fehler "INVALID_COMMAND" kommt. Timeout erwarte ich. Das liegt an gleichzeitigen Zugriffen von verschiedenen Clients. Aber invalid hatte ich nicht erwartet.

Wichtig ist mir noch: Danke, dass du mein Modul und die viele Arbeit überflüssig gemacht hast ;)

Genial. Da ich Python nicht kann (und vor allem will), bin ich froh, dass du es dir angetan hast. Danke dafür. :) Ich empfehle nun im anderen Thread dieses Modul.

marvin78

#18
Das wird so sein. Der Wechselrichter ist im LAN und ich habe mein Modul parallel laufen. Ich würde dann aber nur timeouts oder connection-errors erwarten nicht "INVALID_COMMAND".

Ich konnte battery.soc zu battery_soc machen, in dem ich es ins JSON gepackt habe.

Allerdings denke ich, dass es zwar Defaults geben sollte, man aber alle Readings löschen, falls ein JSON existiert und dann nur noch die im JSON enthaltenen aktualsieren sollte. Manch einer möchte ggf. nur einen oder zwei Werte lesen und nicht die Übersicht verlieren. Ggf. auch mit einem Attribut konfigurierbar. 


chris_kmn

#19
was mache ich falsch ???

json:
   
{
"battery_soc": {
  "reading":"battery.soc",
  "factor":100
  }
}

Reading:

battery.soc     0.60     2022-02-11 09:58:52

battery_soc kommt gar nicht. Hab auch alle readings gelöscht incl. restart

marvin78

Falschherum.

{
"battery.soc": {
  "reading":"battery_soc",
  "factor":100
  }
}

febus

Ich brauche bitte mal einen Schubser in die richtige Richtung.
Habe alles nach Anleitung installiert. Der fhempyserver will aber nicht starten.

FHEM Log:
Zitat2022.02.11 11:06:22 3: fhempyserver_15733: starting
2022.02.11 11:06:22 3: fhempyserver_15733: using logfile: ./log/fhempy-2022-02-11.log
2022.02.11 11:06:22 3: fhempyserver_15733: read: end of file reached while sysread
2022.02.11 11:06:22 3: fhempyserver_15733: stopped

fhempy Log:
ZitatSyntaxError: invalid syntax
  File "FHEM/bindings/python/bin/fhempy", line 87
    logging.getLogger(__name__).info(f"Successfully installed {package}")


Viele Grüße,
Marc

chris_kmn

Zitat von: marvin78 am 11 Februar 2022, 10:13:35
Falschherum.

{
"battery.soc": {
  "reading":"battery_soc",
  "factor":100
  }
}




ok. klappt jetzt

Und bei mehreren Werten dann so:

{
    "g_sync.p_ac_sum_lp": {
    "reading": "power_ac",
    "factor": 1
     },
    "battery.soc": {
    "reading": "battery_soc",
    "factor":100
    },
    "energy.e_grid_feed_day": {
    "reading": "energy_day_grid_feed_in",
    "factor":1
    },
    "energy.e_ac_day": {
    "reading": "energy_day",
    "factor":1
    },
    "energy.e_grid_load_day": {
    "reading": "energy_day_grid_load",
    "factor":1
    },
    "g_sync.p_ac_grid_sum_lp": {
    "reading": "power_grid_total",
    "factor":1
    },
    "g_sync.p_acc_lp": {
    "reading": "power_battery",
    "factor":1
    },
    "db.temp1": {
    "reading": "temperature_wr",
    "factor":1
    }
}

dominik

Zitat von: febus am 11 Februar 2022, 11:09:04
Ich brauche bitte mal einen Schubser in die richtige Richtung.
Habe alles nach Anleitung installiert. Der fhempyserver will aber nicht starten.

FHEM Log:
fhempy Log:

Du brauchst Python 3.7 oder höher.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

febus

Zitat von: dominik am 11 Februar 2022, 11:30:27
Du brauchst Python 3.7 oder höher.

Irgendwas mache ich noch falsch. Ich habe Python 3.10.2 auf dem Pi installiert:
pi@raspberrypi:~ $ python -V
Python 3.10.2


Wobei sudo python auf Version 3.5 verweist...?
pi@raspberrypi:~ $ sudo python -V
Python 3.5.3


Wie sehe ich denn, welche Version FHEM nutzt?

Viele Grüße,
Marc

dominik

Wenn du einen Pi hast, dann mach einfach ein Standard Upgrade auf bullseye, dort ist Python 3.9 Standard. Ich empfehle keinesfalls Python manuell zu installieren.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

dominik

Folgende Punkte noch:

- Error Reading: Wollt ihr sicher ein einzelnes Reading "error" wo bei jedem Update der letzte Fehler angezeigt wird? Ich habe folgende Bedenken dabei:
   - es wird nur der letzte Fehler angezeigt
   - man verlässt sich daher auf Werte in den Readings, die womöglich nicht korrekt sind, da ja nur der letzte Fehler angezeigt wird
   - niemand (denke ich) übernimmt das error Reading in ein Frontend. Nachdem man nicht täglich in das error Reading rein schaut, kann es sein, dass man im Frontend sich andauernd auf falsche Werte verlässt.
   - aus diesen Gründen würde ich den Fehler direkt im Reading, weil dort erkennt es der User gleich, belassen

Nachdem ich das Modul aber selbst nicht nutze, spielt es für mich keine Rolle wie ich es implementiere, lasst mich wissen was für euch brauchbar ist. Ich wollte euch nur meine Bedenken mitgeben als ich es gerade umsetzen wollte :)

- Standard Readings entfernen: Soll ich die Standardreadings immer entfernen sobald man das json Attribut nutzt? Weil in dem Fall kann man von einem "advanced" User ausgehen.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

chris_kmn

Zum Error Reading:
Mir ist das ehrlich gesagt auch gleich, finde deine Argumentation aber plausibel. Von mir aus also gerne in den Readings selber.

Den Standard-Readingsatz zu entfernen bei Nutzung der reading attribute finde ich auch gut. Das ist das Beste aus beiden Varianten 😊

dominik

Achso...noch dazu...
ZitatAllerdings wundere ich mich gerade, warum sehr häufig der Fehler "INVALID_COMMAND" kommt. Timeout erwarte ich. Das liegt an gleichzeitigen Zugriffen von verschiedenen Clients. Aber invalid hatte ich nicht erwartet.

INVALID_COMMAND oder TIMEOUT bekomme ich direkt von der Library. Was mir noch aufgefallen ist, es wird bei jeder Abfrage die Connection neu aufgebaut und dann wieder beendet. Ist es eventuell sinnvoll diese offen zu lassen? Hat das irgendwelche negativen Auswirkungen auf andere Geräte/Apps/... die ebenfalls darauf zugreifen wollen?
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

chris_kmn

Zitat von: dominik am 11 Februar 2022, 16:57:59
Achso...noch dazu...
INVALID_COMMAND oder TIMEOUT bekomme ich direkt von der Library. Was mir noch aufgefallen ist, es wird bei jeder Abfrage die Connection neu aufgebaut und dann wieder beendet. Ist es eventuell sinnvoll diese offen zu lassen? Hat das irgendwelche negativen Auswirkungen auf andere Geräte/Apps/... die ebenfalls darauf zugreifen wollen?

Wenn du damit die Zeit zwischen zwei Intervallen meinst, dann sollte man die Connection lieber zu lassen damit eine App o.ä. zugreifen kann. Wenn du aber die Abfrage der Readings bei einem Intervall meinst, dann würde ich die Con offen lassen bis alle Readings abgerufen wurden.