Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Holidaymodes in .Test5 - ems-esp reboots #2

Open
tp1de opened this issue Dec 15, 2024 · 11 comments
Open

Holidaymodes in .Test5 - ems-esp reboots #2

tp1de opened this issue Dec 15, 2024 · 11 comments

Comments

@tp1de
Copy link

tp1de commented Dec 15, 2024

@MichaelDvP

Hallo Michael,

ich habe gesehen, dass du die holidaymodes implementiert hast ( letzte .Test5) und wollte das mal testen.
Funktioniert für mich leider nicht. Das Gateway rebootet permanent.

Nur mit Glück konnte ich nach mehreren Versuchen die Vorgängerversion laden.

@MichaelDvP
Copy link
Owner

Konntest Du nachvollzeihen ob es beim bus lesen oder bei mqtt/api crashed?
Bei solchen reboots einfach vom bus trennen und standalone betreiben, dann sollte nix crashen und man kann in Ruhe die alte Version hochladen.

Kannst Du mir vollständig telegramme für holiday (RC300 0x269,ff oderBC400 0x165, ff) senden, dann kann ich proddys tests verwenden und simulieren.

@tp1de
Copy link
Author

tp1de commented Dec 15, 2024

Kannst Du mir vollständig telegramme für holiday (RC300 0x269,ff oderBC400 0x165, ff) senden, dann kann ich proddys tests verwenden und simulieren.

Ich habe keine holidayModes aktiv. z.B. hm1 aus ioBroker:
grafik

Wenn startStop = "2009-01-01/2009-01-01" dann ist der holidayMode inaktiv.

ems-esp:$ read 10 269
000+03:03:47.610 N 27: [emsesp] me(0x0B) R thermostat(0x10), RC300Holiday1(0x0269), length: 25
000+03:03:47.673 N 28: [emsesp] thermostat(0x10) W me(0x0B), RC300Holiday1(0x0269), data: 09 01 01 09 01 01 03 11 02 FF FF 00 00 00 00 00 00 FF 00

@tp1de
Copy link
Author

tp1de commented Dec 15, 2024

hcMode kann folgende Werte einnehmen:
"states": {
"1": "AUTO_SAT",
"2": "FIX_TEMP",
"3": "OFF",
"4": "ECO"
},

dhwMode:
"states": {
"2": "OFF",
"3": "TD_OFF"
},

@tp1de
Copy link
Author

tp1de commented Dec 15, 2024

assignedTo aus dem ioBroker code (d = telegram data buffer):

if (d[9] == "FF") assignedTo.push("hc1");
if (d[10] == "FF") assignedTo.push("hc2");
if (d[11] == "FF") assignedTo.push("hc3");
if (d[12] == "FF") assignedTo.push("hc4");
if (d[17] == "FF") assignedTo.push("dhw1");
if (d[18] == "FF") assignedTo.push("dhw2");

Ob es noch mehr assignments gibt kann ich nicht sagen. (buffer 13 bis 16 ??)
Die Werte werden nur geschrieben, wenn das startStop Datum > als das aktuelle Datum ist. Ansonsten wird ein leeres Array ausgegeben.

@tp1de
Copy link
Author

tp1de commented Dec 15, 2024

Generell frage ich mich aber, ob diese holidayModes so überhaupt Sinn machen.
Ich gehe davon aus, dass alle Anwender neben ems-esp noch eine Hausautomation-Software verwenden (ioBroker, Homeassistant etc).
Es ist wesentlich einfacher dort die Schaltlogik zu implementieren, d.h. Heizkreise auf Aus oder auf ECO zu schalten. Analog WW.
Einfache Timer gibt es für alle Systeme.

@MichaelDvP
Copy link
Owner

Hab mal Testdaten für alle 5 Telegramme eingefügt, keine Crashes aber Formatierung war falsch.
Ausgabe sieht so aus:

ems-esp:# call thermostat holidays
{
  "name": "holidays",
  "fullname": "holiday dates",
  "circuit": "",
  "type": "json",
  "value": [
    {
      "start": "01.01.2009",
      "end": "01.01.2009",
      "hcmode": "off",
      "dhwmode": "off",
      "temp": 17,
      "hc": [
        1,
        1,
        0,
        0
      ],
      "dhw": [
        1,
        0
      ]
    },
    {
      "start": "01.01.2009",
      "end": "01.01.2009",
      "hcmode": "off",
      "dhwmode": "off",
      "temp": 17,
      "hc": [
        1,
        1,
        0,
        0
      ],
      "dhw": [
        1,
        0
      ]
    },
    {
      "start": "01.01.2009",
      "end": "01.01.2009",
      "hcmode": "off",
      "dhwmode": "off",
      "temp": 17,
      "hc": [
        1,
        1,
        0,
        0
      ],
      "dhw": [
        1,
        0
      ]
    },
    {
      "start": "01.01.2009",
      "end": "01.01.2009",
      "hcmode": "off",
      "dhwmode": "off",
      "temp": 17,
      "hc": [
        1,
        1,
        0,
        0
      ],
      "dhw": [
        1,
        0
      ]
    },
    {
      "start": "01.01.2009",
      "end": "01.01.2009",
      "hcmode": "off",
      "dhwmode": "off",
      "temp": 17,
      "hc": [
        1,
        1,
        0,
        0
      ],
      "dhw": [
        1,
        0
      ]
    }
  ],
  "readable": true,
  "writeable": true,
  "visible": true
}

Bin mir nicht sicher ob das jsonArray für die 5 Modi sinnvoll ist, oder besser jsonObjekte {"hm1":{...}, "hm2":{...}}

Wenn's bei Dir immer noch crashed war es wohl nicht in den holiday-modes.

@tp1de
Copy link
Author

tp1de commented Dec 15, 2024

Ja funktioniert, wenn ich beim Update den ioBroker Adapter ausschalte.
Wenn der ioBroker Adapter läuft werden alle 15 Sekunden API calls abgesetzt, dann startet die Device Erkennung neu.

Im ioBroker finden ich dann die holidays als JSON. (API funktioniert)
Im MQTT Explorer sehe ich nichts.

Bin mir nicht sicher ob das jsonArray für die 5 Modi sinnvoll ist, oder besser jsonObjekte {"hm1":{...}, "hm2":{...}}

Zu überlegen wäre es, ob nicht 1 holidayMode (hm1) reicht.
Ich würde die 4 Elemente der Buderus API übernehmen und leicht anpassen und eigene Objekte anlegen.

395863745-bdd145c5-bef9-463a-a829-c9103012fbc8

assignedTo als enum mit den möglichen Varianten
dhwMode und hcMode als enum
start und stop als date

@MichaelDvP
Copy link
Owner

Ja funktioniert, wenn ich beim Update den ioBroker Adapter ausschalte.
Wenn der ioBroker Adapter läuft werden alle 15 Sekunden API calls abgesetzt, dann startet die Device Erkennung neu.

Hmm, kannst Du feststellen bei welchem Befehl der reboot erfolgt. Das ist nicht schön und ich bekomme es nicht simuliert.

dhwmode und hcmode sind enums, assigedTo hab ich als jsonArray hc[1,0,0,0] und dhw[1,0].
Das als enum gibt ziemlich viele Einträge, es müssen ja alle Kombinationen abgedeckt sein.

@tp1de
Copy link
Author

tp1de commented Dec 15, 2024

Hmm, kannst Du feststellen bei welchem Befehl der reboot erfolgt. Das ist nicht schön und ich bekomme es nicht simuliert.

Tritt aktuell nicht mehr auf. Ich schaue morgen nochmal.

dhwmode und hcmode sind enums, assigedTo hab ich als jsonArray hc[1,0,0,0] und dhw[1,0].
Das als enum gibt ziemlich viele Einträge, es müssen ja alle Kombinationen abgedeckt sein.

Noch sehe ich keine Änderungen und im MQTT ist nachwievor nichts vorhanden.
Sollte ich Änderungen sehen?

@MichaelDvP
Copy link
Owner

Noch sehe ich keine Änderungen und im MQTT ist nachwievor nichts vorhanden.
Sollte ich Änderungen sehen?

Ja, aber es war ein Vertipper drin, jetzt sollte es gehen.

@tp1de
Copy link
Author

tp1de commented Dec 18, 2024

Ja die MQTT JSON ist nun da.
Ich frage mich nur wie diese praktisch gefüllt werden soll?

Sollten nicht start und end date Objekte sein?
Und dhwmode und hcmode enum's, temp numerisch?

Dann bleibt die Frage wie das "assignedTo" abgebildet wird.
Im km200 Gateway wird ein Array ausgegeben und bei Änderungen erwartet: [hc1,hc2,dhw1].
Im ioBroker mache ich daraus einen writeable Text.
Die km200 API hat die allowed values hinterlegt.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants