CUL credit Limit

Begonnen von haufsolutions, 30 Dezember 2014, 00:14:18

Vorheriges Thema - Nächstes Thema

haufsolutions

Hallo zusammen,

mir gehen in den letzten Tagen immer mehr die credits aus:
CUL_MAX_SendQueueHandler: Not enough credit! credit10ms is 47, but we need 111. Waiting 64 seconds usw. andauernd.

Also dachte ich mir behelfe ich mir mit folg. Trick:
http://blog.mjwconsult.co.uk/modifying-cul-firmware-to-increase-send-limit-for-eq3-max-heating-thermostats/

Soweit so gut alles angepasst und den CUL auf 1.61 mit (make usbprogram_v3) geflasht.
Jedoch scheint das ganze nicht sehr lange von Erfolg gekrönt zu sein.

Es lief grade 4Std ohne eine Meldung und nun kommt die nervige Meldung wieder.
Hat vll jem einen Lösungsansatz?

LG
Micha

Edit: Ok habe scheinbar vergessen das ganze rezucompilen. Mal gucken wie lange es nun gut geht  ;D

Rince

Um mal ein anderes Beispiel zu bringen:
Bei deinem Auto leuchtet immer grundlos die ABS Warnleuchte auf.
Dein Lösungsweg besteht darin, die Birne am Armaturenbrett auszutauschen, dass man das Warnlicht nimmer sieht...



Sorry.
Wenn dir dauernd die Credits ausgehen, machst du was falsch. Du hast vergessen einige Geräte zu pairen (oder es hat nicht funktioniert), die Funkreichweite ist zu gering, du bedienst MAX völlig falsch...

Mit dieser Modifikation trittst du den gesetzlich geregelten Grenzwert mit Füßen und öffnest der Frickelei Tür und Tor. Spätestens wenn die BundesNetzAgentur mit einem Messwagen vor deiner Tür steht, wird es teuer...
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

AlterSchwede

Bei mir das gleiche Problem seit dem update auf 7358: Die credits gehen aus. Der Grund ist

2014.12.30 10:26:25 2: CUL_MAX_SendQueueHandler: Missing ack from 1059f0 for 0c6e00421111111059f0002ac1

Ich habe 3 MAX! Thermostate im gleichen Raum und seit ich alle 3 an ein FakeWallThermostate associatet habe, kamen regelmäßig diese "ack's"
Das fhem und auch der raspi ist restartet, alle Max!-Thermostate sind resettet und neu gepairt. Trotzdem kommen die ack-Fehlermeldungen und dann wird es natürlich eng mit den credits.

Gruß
Alter Schwede

John


Hallo Alter Schwede,
die Frage ist doch nicht, ob die Thermostate im gleichen Raum sind, sondern wie die Distanz zwischen CUL bzw Cube und Thermostate
zu beurteilen ist.

Hat vor dem FakeWallThermostat alles funktioniert ?

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

AlterSchwede

Hallo John,

ja, davor hat es funktioniert. Mein schlechtester Empfangswert (RSSI) ist übrigens -69.
Davor habe ich mehrere Wochen die Thermostate einzeln nur mit einer Solltemperatur versorgt. Jetzt sollen die Messwerte der netatmo-Indoorstation die IST-Temperatur dazu liefern. Dazu habe ich FakeWallThermostat genutzt und das lief mit einem Thermostat stabil. Nach dem Anschließen der beiden weiteren Thermostate ist das System quasi kollabiert, d.h. nach und nach reagierten die Thermostate nicht mehr, was auf die credits und damit auf die ack's zurückzuführen war.

Gruß
Alter Schwede

John

Ich fürchte das ganze "Fake" Thema ist noch nicht so ausgereift.

Ich machte ähnliche Erfahrung, wie du.
Am Ende habe ich alle Komponenten resettiert und den Fake-Kram entfernt.

Damit war der Spuk vorbei.

Ich meine gelesen zu haben, daß die GroupID elementar wichtig wäre (irgendwas mit 9..11).
Hier solltest du selbst recherchieren.

Vielleicht kann dir auch Matthias Gehre weiterhelfen (ggf. private Mail, wenn er sich nicht meldet).

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

AlterSchwede

Ich habe getan, wie du geraten hast, John. Ich habe die Max!-Thermostate und deren Logfiles gelöscht. Nach shutdown/restart war dann schlagartig Ruhe im Funkverkehr. Davor hat die Cul_Max noch wie wild nach Geräten gesucht, die nicht antworteten und so weiter Credits verbraucht.
Jetzt habe ich zunächst einen Thermostat stabil im Zugriff. Das ist, nachdem mir 2 Tage lang die Controlle schrittweise entglitten war, ein gutes Gefühl.
Schade, dass die Fake-Sache noch nicht so ausgereift ist. Regelungstechnisch macht es einfach mehr Sinn, einen Ist-Wert-Geber zu verwenden, der weit von den Heizkörpern entfernt ist. Meine Heizkörper sind oben abgedeckt (Steinplatte), so dass sich die Thermostate bei 27 Grad kuschelig fühlen, während das Wohnzimmer tatsächlich gerade mal 20 Grad hat. Selbst einen Vorhalt bei der Soll-Temperatur zu geben ist natürlich eine Möglichkeit aber eben nicht sauber.
Ich hoffe, dass das FakeWallThermostat noch weiter entwickelt wird!
Danke für die Hilfe!

Alter Schwede

John

#7
Hallo AlterSchwede,

schön daß es nun besser geht.

Ich habe übrigens einen FactoryReset bei meinen Thermostaten durchführen müssen, damit diese die GroupID vergessen.

Schau dir mal das Modul PID20 an. Vielleicht ist das ja eine Übergangslösung für dich,

http://www.fhemwiki.de/wiki/PID20_-_Der_PID-Regler

Ich hab es entwickelt um meine Fußbodenheizung über Max zu fahren.
http://www.fhemwiki.de/wiki/MAX!_Thermostat_f%C3%BCr_die_Fussbodenheizung

Funktioniert soweit ganz gut. Das Max-Thermostat wird als reines Stellglied betrieben.
Die Regelung liegt komplett in FHEM.
Als Istwert kannst du alles verwenden, was in FHEM verfügbar ist (einen Event auslöst).

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

AlterSchwede

Hallo John,

sowas nenne ich ja mal Gedankenübertragung. Gerade saß ich vor meinem fhem-Browser und war begeistert, wieder die Kontrolle zu haben. (Einen factory-Reset musste ich auch machen, das hatte ich vergessen zu erwähnen.) Dann dachte ich, ob es nicht eine Idee wäre, eine eigene Regelung für die Thermostate zu schreiben. Beim genaueren Nachdenken kamen mir bruchstückhafte Erinnerungen an proportionale, integrale und differentielle Regler und an die Gefahr des Aufschwingens. Das erschien mir dann doch zu komplex. Und jetzt kommst du mit einem PID-Regler-Modul. Das ist klasse! Ich schaue mir das an und gebe gern feedback!

Viele Grüße!

haufsolutions

#9
Also klar mir ist auch nicht daran gelegen das Problem zu ignorieren, ich suchte nur nach einer gescheiten Übergangslösung  :)
Nun habe ich folg. Setup:
6 MAX Heizkörperthermostate
4 Fensterkontakte
7 Temperatursender mittels Jeelink angebunden.
Ich steuer jeden Heizkörperthermostat in Abhängigkeit von den Temperatursendern also auch mit fakeWT und dem MaxFakeWallThermostat.
Das ganze lief zu Anfang mit 2-3 HZ auch gut nur ab dem 4 ging dem ganzen langsam die Puste aus.
Ich habe das Logging nunmal auf 5 gestellt um mehr zu sehen.

Auf Log 3 bekomme ich anfangs nur:
2014.12.30 02:25:19 3: set  fakeWT MAX_0d1c30 17.5 17.2 : Please define fakeWT first
2014.12.30 02:25:19 3: SendExtTemp_Arbeitszimmer return value: Please define fakeWT first
Für ein paar der definierten SendExtTemp_* Benachrichtigungen.
Das ganze renkt sich aber nach ein paar Minuten wieder ein und das Log auf Stufe 3 sieht dann weitstgehend so aus:

2014.12.30 06:04:49 3: set cm fakeWT MAX_0f5964 17.5 17.7
2014.12.30 06:04:54 3: set cm fakeWT MAX_0ad5a9 17.5 17.6
2014.12.30 06:06:38 3: set cm fakeWT MAX_0da236 18.0 17.9
2014.12.30 06:06:55 3: set cm fakeWT MAX_0ad573 17.5 17.9
2014.12.30 06:07:11 3: set cm fakeWT MAX_0ad599 17.5 17.6
2014.12.30 06:07:24 3: set cm fakeWT MAX_0d1c30 17.5 17.7
2014.12.30 06:14:54 3: set cm fakeWT MAX_0f5964 17.5 17.7
2014.12.30 06:14:59 3: set cm fakeWT MAX_0ad5a9 17.5 17.5
2014.12.30 06:16:40 3: set cm fakeWT MAX_0da236 18.0 18
2014.12.30 06:17:02 3: set cm fakeWT MAX_0ad573 17.5 17.9
2014.12.30 06:17:15 3: set cm fakeWT MAX_0ad599 17.5 17.6
2014.12.30 06:17:34 3: set cm fakeWT MAX_0d1c30 17.5 17.6
2014.12.30 06:24:59 3: set cm fakeWT MAX_0f5964 17.5 17.7
2014.12.30 06:25:04 3: set cm fakeWT MAX_0ad5a9 17.5 17.5
2014.12.30 06:26:50 3: set cm fakeWT MAX_0da236 18.0 18
2014.12.30 06:27:04 3: set cm fakeWT MAX_0ad573 17.5 17.9
2014.12.30 06:27:23 3: set cm fakeWT MAX_0ad599 17.5 17.6
2014.12.30 06:27:40 3: set cm fakeWT MAX_0d1c30 17.5 17.6
2014.12.30 06:35:04 3: set cm fakeWT MAX_0f5964 17.5 17.6
2014.12.30 06:35:08 3: set cm fakeWT MAX_0ad5a9 17.5 17.4
2014.12.30 06:36:53 3: set cm fakeWT MAX_0da236 18.0 18
2014.12.30 06:37:07 3: set cm fakeWT MAX_0ad573 17.5 17.9
2014.12.30 06:37:26 3: set cm fakeWT MAX_0ad599 17.5 17.6
2014.12.30 06:37:45 3: set cm fakeWT MAX_0d1c30 17.5 17.6
2014.12.30 06:45:08 3: set cm fakeWT MAX_0f5964 17.5 17.6
2014.12.30 06:45:18 3: set cm fakeWT MAX_0ad5a9 17.5 17.4
2014.12.30 06:46:55 3: set cm fakeWT MAX_0da236 18.0 18.1
2014.12.30 06:47:14 3: set cm fakeWT MAX_0ad573 17.5 17.9
2014.12.30 06:47:30 3: set cm fakeWT MAX_0ad599 17.5 17.6
2014.12.30 06:47:51 3: set cm fakeWT MAX_0d1c30 17.5 17.6
2014.12.30 06:55:13 3: set cm fakeWT MAX_0f5964 17.5 17.5
2014.12.30 06:55:18 3: set cm fakeWT MAX_0ad5a9 17.5 17.4
2014.12.30 06:57:01 3: set cm fakeWT MAX_0da236 18.0 18.1
2014.12.30 06:57:17 3: set cm fakeWT MAX_0ad573 17.5 17.9
2014.12.30 06:57:38 3: set cm fakeWT MAX_0ad599 17.5 17.6
2014.12.30 06:57:57 3: set cm fakeWT MAX_0d1c30 17.5 17.6


Auf Log 5 sieht man schon ein bisschen mehr:

2014.12.30 21:43:20 5: myJeeLink dispatch OK 9 41 1 4 154 56
2014.12.30 21:43:20 5: Triggering LaCrosse_29 (3 changes)
2014.12.30 21:43:20 5: Notify loop for LaCrosse_29 temperature: 17.8
2014.12.30 21:43:20 5: Triggering SendExtTemp_Schlafzimmer
2014.12.30 21:43:20 4: SendExtTemp_Schlafzimmer exec {MaxFakeWallThermostat("MAX_0f5964", 17.8)}
2014.12.30 21:43:20 5: Cmd: >{MaxFakeWallThermostat("MAX_0f5964", 17.8)}<
2014.12.30 21:43:20 4: eventTypes: LaCrosse LaCrosse_29 temperature: 17.8 -> temperature: .*
2014.12.30 21:43:20 4: eventTypes: LaCrosse LaCrosse_29 humidity: 56 -> humidity: .*
2014.12.30 21:43:20 4: eventTypes: LaCrosse LaCrosse_29 battery: ok -> battery: ok
2014.12.30 21:43:21 5: CUL_MAX_SendQueueHandler: 88 items in queue
2014.12.30 21:43:21 5: SW: X
2014.12.30 21:43:21 5: CUL/RAW (ReadAnswer): 21  111

2014.12.30 21:43:21 5: needPreamble: 1, necessaryCredit: 111, credit10ms: 111
2014.12.30 21:43:21 5: CUL0 sending Zs0cf700421111110ad5a90023b0
2014.12.30 21:43:21 5: SW: Zs0cf700421111110ad5a90023b0
2014.12.30 21:43:21 5: CUL_MAX_SendQueueHandler: 88 items in queue
2014.12.30 21:43:22 5: CUL_MAX_SendQueueHandler: 88 items in queue
2014.12.30 21:43:22 5: CUL/RAW: /Z0EF702020AD5A91111110001190C232A

2014.12.30 21:43:22 4: CUL_Parse: CUL0 Z0EF702020AD5A91111110001190C232A -53
2014.12.30 21:43:22 5: CUL0 dispatch Z0EF702020AD5A91111110001190C23
2014.12.30 21:43:22 5: CUL_MAX_Parse: len 14, msgcnt F7, msgflag 02, msgTypeRaw Ack, src 0ad5a9, dst 111111, groupid 0, payload 01190C23
2014.12.30 21:43:22 5: CUL_MAX_Parse: rssi: -53
2014.12.30 21:43:22 5: cm dispatch MAX,0,Ack,0ad5a9,01190C23
2014.12.30 21:43:22 5: MAX_Parse MAX,0,Ack,0ad5a9,01190C23
2014.12.30 21:43:22 5: MAX_Parse MAX,0,ThermostatState,0ad5a9,190C23
2014.12.30 21:43:22 5: battery 0, rferror 0, panel 0, langateway 1, dstsetting 1, mode 1, valveposition 12 %, desiredTemperature 17.5, until , curTemp
2014.12.30 21:43:22 5: Triggering MAX_0ad5a9 (5 changes)
2014.12.30 21:43:22 5: Notify loop for MAX_0ad5a9 mode: manual
2014.12.30 21:43:22 4: eventTypes: MAX MAX_0ad5a9 mode: manual -> mode: manual
2014.12.30 21:43:22 4: eventTypes: MAX MAX_0ad5a9 battery: ok -> battery: ok
2014.12.30 21:43:22 4: eventTypes: MAX MAX_0ad5a9 desiredTemperature: 17.5 -> desiredTemperature: .*
2014.12.30 21:43:22 4: eventTypes: MAX MAX_0ad5a9 valveposition: 12 -> valveposition: .*
2014.12.30 21:43:22 4: eventTypes: MAX MAX_0ad5a9 17.5 °C -> .* °C
2014.12.30 21:43:22 4: eventTypes: MAX MAX_0ad5a9 state: 17.5 °C -> state: .* °C
2014.12.30 21:43:22 5: Got matching ack
2014.12.30 21:43:22 5: CUL_MAX_SendQueueHandler: 88 items in queue
2014.12.30 21:43:23 5: CUL_MAX_SendQueueHandler: 87 items in queue
2014.12.30 21:43:23 5: SW: X
2014.12.30 21:43:23 5: CUL/RAW (ReadAnswer): 21    1

2014.12.30 21:43:23 5: needPreamble: 1, necessaryCredit: 111, credit10ms: 1
2014.12.30 21:43:23 2: CUL_MAX_SendQueueHandler: Not enough credit! credit10ms is 1, but we need 111. Waiting 110 seconds.
2014.12.30 21:43:23 5: JeeLink/RAW: /OK 9 47 1 4 155 55

2014.12.30 21:43:23 5: myJeeLink dispatch OK 9 47 1 4 155 55
2014.12.30 21:43:23 5: Triggering LaCrosse_2F (4 changes)
2014.12.30 21:43:23 5: Notify loop for LaCrosse_2F temperature: 17.9
2014.12.30 21:43:23 5: Triggering SendExtTemp_Bad
2014.12.30 21:43:23 4: SendExtTemp_Bad exec {MaxFakeWallThermostat("MAX_0ad573", 17.9)}
2014.12.30 21:43:23 5: Cmd: >{MaxFakeWallThermostat("MAX_0ad573", 17.9)}<
2014.12.30 21:43:23 4: eventTypes: LaCrosse LaCrosse_2F temperature: 17.9 -> temperature: .*
2014.12.30 21:43:23 4: eventTypes: LaCrosse LaCrosse_2F humidity: 55 -> humidity: .*
2014.12.30 21:43:23 4: eventTypes: LaCrosse LaCrosse_2F T: 17.9 H: 55 -> T: .* H: .*
2014.12.30 21:43:23 4: eventTypes: LaCrosse LaCrosse_2F battery: ok -> battery: ok
2014.12.30 21:43:23 4: eventTypes: LaCrosse LaCrosse_2F state: T: 17.9 H: 55 -> state: T: .* H: .*
2014.12.30 21:43:26 5: JeeLink/RAW: /OK 9 37 1 4 150 55

haufsolutions

Ein kleines Update von mir:
Habe unterdessen für alle Tempsensoren die event-* Einstellungen wie auch im Thread: http://forum.fhem.de/index.php?topic=23903.0 angepasst.
   event-min-interval humidity:60,state:60,temperature:60
   event-on-change-reading battery
   event-on-update-reading humidity,state,temperature

Desweiteren spiele ich mit einer Anpassung an dem MaxFakeWallThermostat.
Ich finde es macht nicht viel Sinn alle 10min etwas rauszufeuern, wenn es eh keine Änderungen in der Zwischenzeit gab.
In Anlehung an die Erkenntnisse aus dem Wiki Artikel: http://www.fhemwiki.de/wiki/MAX
würde ich den Vergleichswert für $lastSet hier eher auf 1740 (29 Minuten) setzen.

Zwischenzeitlich wurde der "creditMangel" wohl durch eine der beiden Änderungen signifikant zurückgefahren.