Anbindung and ebusd mit modul 98_GAEBUS.pm

Begonnen von jamesgo, 14 September 2015, 10:18:17

Vorheriges Thema - Nächstes Thema

jamesgo

ich eröffne mal einen Thread rund um das modul 98_GAEBUS.pm um den Thread Heizung mit eBus-Schnittstelle zu entlasten.


mikel279

Hallo jamesgo,

ich habe doch schon mal ne Frage.

Kannst Du bei den Readings (z.B. r~bai~StorageTemp~d.04_Speicheristtemp.) das "ok" nach dem Messwert weg lassen? Hintergrund ist, ich möchte den Wert (mit °C) in einem dummy anzeigen lassen und wenn ich im stateFormat {sprintf("%.2f °C",ReadingsVal("ebus","WW_Speicher",0))} angebe bekomme ich im FHEM Log eine Fehlermeldung :-( bzw. weißt Du wie ich den Wert selbst splitten kann?

LG Mikel

kawa0815

Hallo Andy,


Ich habe hier den gleichen Fehler wie Reinhard.

Wenn ich mit:

get r~bai~SDTRT~d.41_Rücklauftemperatur


die Temperatur auslese, klappt das wunderbar.
Versuche ich allerdings dann diese über  "set" als Attribut zu deffinieren, bekomme ich die Fehlermeldung


invalid parameter



kawa

jamesgo


kawa0815

Zitat von: jamesgo am 14 September 2015, 11:24:24
Hallo kawa,

hast du das aktuelle modul vom sourceforge server verwendet?

http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/contrib/98_GAEBUS.pm

Grüße
Andy

Ja, gerade noch einmal versucht -> "invalid parameter "

kawa

Reinhart

Zitat von: mikel279 am 14 September 2015, 11:06:21
Hallo jamesgo,

ich habe doch schon mal ne Frage.

Kannst Du bei den Readings (z.B. r~bai~StorageTemp~d.04_Speicheristtemp.) das "ok" nach dem Messwert weg lassen? Hintergrund ist, ich möchte den Wert (mit °C) in einem dummy anzeigen lassen und wenn ich im stateFormat {sprintf("%.2f °C",ReadingsVal("ebus","WW_Speicher",0))} angebe bekomme ich im FHEM Log eine Fehlermeldung :-( bzw. weißt Du wie ich den Wert selbst splitten kann?

LG Mikel

das ist in diesem Fall nicht so einfach. John hat zwar im ebusd diesen Fall vorgesehen, da wir jedoch über GAEBUS diesen Parameter noch nicht setzen können geht das nicht so leicht.

über ebusd kannst du so abfragen:
pi@raspberry2 ~ $ ebusctl r -f StorageTemp
48.50;ok

pi@raspberry2 ~ $ ebusctl r -f StorageTemp tempsensor.0
46.69

in der 2. Variante erfolgt die Rückgabe ohne das "ok".

Über ECMD habe ich das nach Beispiel von pah wie folgt gelöst:
# vorlauftemperatur
get Vorlauf cmd {"r -f StorageTemp tempsensor.0\n"}
get Vorlauf expect "\d+\.\d+\n\n"
get Vorlauf postproc { sprintf("%5.1f C",$_) }


Die beste Lösung wäre, wenn Andy im Attribut bei der Benennung noch ein Leerzeichen erlauben würde, damit man den Typ (wie hier tempsensor.0) dazu schreiben könnte. Oder vielleicht in Klammer oder einem anderen Zeichen. Allerdings ist das einiges an Aufwand um das zu erweitern. Gleichzeitig erhöht sich die Fehlerquote wenn hier ein Blödsinn drinnen steht, der Wert müsste fast aus der csv übernommen werden, da es ohnehin immer der erste ist.

LG
Reinhart
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

Reinhart

Zitat von: kawa0815 am 14 September 2015, 13:01:05
Ja, gerade noch einmal versucht -> "invalid parameter "

kawa

ich habe das ja in der Zwischenzeit es mit dieser neuen Version lösen können.

Checke bitte nochmals ob die csv Files das richtige Format haben.

file --mime-encoding *.csv
es sollte dann bei allen deinen kopierten (in /opt/fhem/ebusd/, nicht im etc/ebusd!) csv UTF-8 dabei stehen!

Wenn nicht alles löschen und nochmals als sudo kopieren und wieder checken. Eventuell in einem Editor (PSPad) das Format UTF-8 setzen und wieder zurück speichern.

LG
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

amunra

Zitat von: mikel279 am 14 September 2015, 11:06:21
Kannst Du bei den Readings (z.B. r~bai~StorageTemp~d.04_Speicheristtemp.) das "ok" nach dem Messwert weg lassen? Hintergrund ist, ich möchte den Wert (mit °C) in einem dummy anzeigen lassen und wenn ich im stateFormat {sprintf("%.2f °C",ReadingsVal("ebus","WW_Speicher",0))} angebe bekomme ich im FHEM Log eine Fehlermeldung :-( bzw. weißt Du wie ich den Wert selbst splitten kann?

LG Mikel
wenn der Temp-Wert 5 stellig ist, dann kann man das z.B. so realisieren:
{substr(ReadingsVal("ebus","WW_Speicher",0),0,5). "°C"}
sonst geht es auch noch per "split" etc. - viele Wege führen nach...

mikel279

Hallo zusammen,

@Reinhart: Danke für Deine Antwort, den Weg über ECMD kannte ich - aber ich wollte es doch über GAEBUS lösen  ;)

@amunra: Richtig, viele Wege führen nach ... - daher habe ich, für mich, glaube ich den richtigen gefunden

Ich habe, wie geschrieben, mir einen dummy zum Anzeigen der Werte eingerichtet. Per setreading schreibe ich das reading "VorlaufTemp" mit folgender notify Def "ebus:VorlaufTemp.* setreading VorlaufTemp VorlaufTemp $EVTPART1". Damit hat das dummy ein reading "VorlaufTemp". Beim schreiben dieses reading wird der state des dummy gesetzt und für diesen habe ich im dummy den stateFormat "{sprintf("%.2f °C",ReadingsVal("VorlaufTemp","VorlaufTemp",0))}" definiert. Damit hat state das korrekte Format zur Anzeige und ich habe ein reading mit dem ich einen plot zeichnen kann.  :)

@Andy / Reinhart: Leider habe ich das gleiche Problem wie kawa0815. Habe das neuste modul von sourceforge gezogen und dank der Hinweise von Reinhart auch geprüft, ob die csv UTF-8 kodiert sind. Nach einen restart von FHEM werden die Werte mit Umlauten auch korrekt angezeigt und auch der get funktioniert einwandfrei. Allerdings bekommen auch ich beim set ein  "invalid parameter" ???

LG Mikel

jamesgo

Hallo,
an dem UTF-8 Problem arbeite ich und werde hoffentlich bald eine Lösung bereitstellen können.

Grüße
Andy

nightstorm99

Hallo Andy,

ließt du an deiner Heizung die Wochenprogramme aus und wenn ja,
wie stellst du dieses optisch dar?
Finde irgendwie nichts, wie man das machen kann.

Danke und Gruß
Denny

nightstorm99

Zitat von: nightstorm99 am 15 September 2015, 07:47:00
Hallo Andy,

ließt du an deiner Heizung die Wochenprogramme aus und wenn ja,
wie stellst du dieses optisch dar?
Finde irgendwie nichts, wie man das machen kann.

Nachtrag:
Die Idee von Reinhart würde ich auch gut finden. Mit dem auslesen des bestimmten Wert.
Wenn man als Attribut "|1" zum Beispeil mit anfügt, würde er nur den ersten Teil des String ausgeben.

Danke und Gruß
Denny

jamesgo

Hallo Denny,
da habe ich nicht wirklich was sinnvolles gefunden.
Für die Grundeinstellung umgehe ich Fhem vollständigt.
Um einen Heizkreis ausserhalb des Zeitintervalls einzuschalten werde ich den "Party Modus" verwenden.

Anbei meine timers.txt (das sind die Zeitprogramme) und doTimers.pl.

doTimers.pl vergleicht die aktuellen Einstellungen mit timers.txt und mit der Option "-s" setzt es die neuen Intervalle.

Für die Zirkulationspumpe würde es doch reichen wischen einem Normalprogramm

05:00;08:00;18:00;21:30;-:-;-:-;selected
und der Ausnahme
05:00;21:30;-:-;-:-;-:-;-:-;selected
umzuschalten.

Grüße
Andy

jamesgo

@Reinhart, kawa0815,

Könnt ihr bitte mal die aktuelle Version von Sourceforge testen.
Damit sollte das Umlauteproblem gelöst sein.

Danke
Andy

jamesgo

#14
Habe den Vorschlag von Reinhart implementiert:

Zitat
Die beste Lösung wäre, wenn Andy im Attribut bei der Benennung noch ein Leerzeichen erlauben würde, damit man den Typ (wie hier tempsensor.0) dazu schreiben könnte.