HB-Dis-EP-42BW - 4.2" ePaper Display

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

TomMajor
Beiträge: 1793
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 175 Mal
Danksagung erhalten: 399 Mal
Kontaktdaten:

Re: HB-Dis-EP-42BW - 4.2" ePaper Display

Beitrag von TomMajor » 24.03.2019, 11:47

t0mk hat geschrieben:
24.03.2019, 09:36
@TomMajor: Danke, Dein Script ist ja ne Riesenerleichterung!

Aber: wenn die Nutzung der vordefinierten Textfelder das Funkkontigent schont, wie kann ich diese mit einem Script nutzen? Wäre natürlich schön, wenn TomMajors Script das auch gleich könnte :D

Danke und Gruß
Deswegen schrieb ich: Was noch fehlt ist support für die Fixtexte (kommt noch)
in den nächsten 2 Tagen denk ich.
Viele Grüße,
Tom

t0mk
Beiträge: 250
Registriert: 08.08.2018, 20:13
Hat sich bedankt: 7 Mal
Danksagung erhalten: 21 Mal

Re: HB-Dis-EP-42BW - 4.2" ePaper Display

Beitrag von t0mk » 24.03.2019, 13:18

TomMajor hat geschrieben:
24.03.2019, 11:47
Deswegen schrieb ich: Was noch fehlt ist support für die Fixtexte (kommt noch)
in den nächsten 2 Tagen denk ich.
Sorry, das habe ich wohl überlesen, ich habe mir nur die Definition und die Beispiele angesehen.

Dann spare ich mir den Versuch, die Fixtexte ohne Dein Script übertragen zu lassen und warte geduldig :)

Dampfmotor
Beiträge: 99
Registriert: 20.03.2016, 11:32
Hat sich bedankt: 7 Mal
Danksagung erhalten: 2 Mal

Re: HB-Dis-EP-42BW - 4.2" ePaper Display

Beitrag von Dampfmotor » 24.03.2019, 14:16

Dampfmotor hat geschrieben:
24.03.2019, 11:42
Wie muss das Skript mit Beispiel 3 aussehen,
um in jede Zeile ein Gerätewert zu erhalten?
Habe es hinbekommen :P

Code: Alles auswählen

integer temp = dom.GetObject('BidCos-RF.JPTH10I004:1.TEMPERATURE').Value().ToString(1) # "°C";
integer hum = dom.GetObject('BidCos-RF.JPTH10I004:1.HUMIDITY').Value().ToString(1) # "%";
    string displayCmd = "JPDISEP000 /1 'Temperatur " # temp # "' /2 'Luftfeuchte " # hum # "'";
    dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("tclsh /usr/local/addons/epaper42.tcl " # displayCmd);

TomMajor
Beiträge: 1793
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 175 Mal
Danksagung erhalten: 399 Mal
Kontaktdaten:

Re: HB-Dis-EP-42BW - 4.2" ePaper Display

Beitrag von TomMajor » 24.03.2019, 18:04

Habe gerade die eine Zeile im Beispiel3/Sensorwert so geändert

Code: Alles auswählen

string temp = dom.GetObject('BidCos-RF.UNISENS077:1.TEMPERATURE').Value().ToString(1) # "°C";
Vorher stand da integer, was nicht ganz korrekt war da nach .Value() der int in einen String gewandelt wird.
HM-Skript verwendet dynamische Typbindung, insofern war es eine Unsauberkeit ohne Auswirkungen, aber so ist es besser.
Betrifft auch temp und hum in Dampfmotor's Beispiel.
Viele Grüße,
Tom

Dampfmotor
Beiträge: 99
Registriert: 20.03.2016, 11:32
Hat sich bedankt: 7 Mal
Danksagung erhalten: 2 Mal

Re: HB-Dis-EP-42BW - 4.2" ePaper Display

Beitrag von Dampfmotor » 24.03.2019, 20:58

Habe das Display jetzt so am laufen, wie ich es mir erhofft habe :D

Was aber ist, wenn ich den Text Temperatur ausschreibe, wird nichts übertragen.

Code: Alles auswählen

string displayCmd = "JPDISEP000 /1 'Temperatur " # temp # "' /2 'Luftfeuchte " # hum # "' /3 'Luftdruck " # air # "' /4 'UV-Index  " # light # "' /5 'Helligkeit " # lux # "' /6 'Windboe " # gust # "' /7 'Windgeschw.  " # speed # "' /8 'Windrichtung  " # direction # "' /9 'Regen heute  " # rain # "' /10 'Regen gestern  " # rain2 # "'";
Lösche ich es bis auf Temp , geht es.

Code: Alles auswählen

string temp = dom.GetObject('BidCos-RF.JPWEA00006:1.TEMPERATURE').Value().ToString(1) # "°C";
string hum = dom.GetObject('BidCos-RF.JPWEA00006:1.HUMIDITY').Value().ToString(1) # "%";
string air = dom.GetObject('BidCos-RF.JPWEA00006:1.AIR_PRESSURE').Value().ToString(1) # "hPa";
string light = dom.GetObject('BidCos-RF.JPWEA00006:1.LIGHTNING_COUNTER').Value().ToString(1) # "";
string lux = dom.GetObject('BidCos-RF.JPWEA00006:1.LUX').Value().ToString(0) # "LUX";
string gust = dom.GetObject('BidCos-RF.JPWEA00006:1.GUST_SPEED').Value().ToString(1) # "km-h";
string speed = dom.GetObject('BidCos-RF.JPWEA00006:1.WIND_SPEED').Value().ToString(1) # "km-h";
string direction = dom.GetObject('BidCos-RF.JPWEA00006:1.WIND_DIRECTION').Value().ToString(1) # "°";
string rain = dom.GetObject('43927').Value().ToString(1) # "mm";
string rain2 = dom.GetObject('43928').Value().ToString(1) # "mm";


string displayCmd = "JPDISEP000 /1 'Temp " # temp # "' /2 'Luftfeuchte " # hum # "' /3 'Luftdruck " # air # "' /4 'UV-Index  " # light # "' /5 'Helligkeit " # lux # "' /6 'Windboe " # gust # "' /7 'Windgeschw.  " # speed # "' /8 'Windrichtung  " # direction # "' /9 'Regen heute  " # rain # "' /10 'Regen gestern  " # rain2 # "'";
    dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("tclsh /usr/local/addons/epaper42.tcl " # displayCmd);
Wenn ich Temperatur ausschreibe und an andere Stelle z.B. Luftfeuchte sechs Buchstaben lösche, geht es auch.

Ist die Übertragung zu groß?

jp112sdl
Beiträge: 12116
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 849 Mal
Danksagung erhalten: 2150 Mal
Kontaktdaten:

Re: HB-Dis-EP-42BW - 4.2" ePaper Display

Beitrag von jp112sdl » 24.03.2019, 21:44

Dampfmotor hat geschrieben:
24.03.2019, 20:58
Ist die Übertragung zu groß?
Kann durchaus sein.
Dazu müsste man mal den kompletten Wert (SUBMIT-Value) sehen, der übertragen werden soll.

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

TomMajor
Beiträge: 1793
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 175 Mal
Danksagung erhalten: 399 Mal
Kontaktdaten:

Re: HB-Dis-EP-42BW - 4.2" ePaper Display

Beitrag von TomMajor » 24.03.2019, 22:52

Dampfmotor hat geschrieben:
24.03.2019, 20:58
Ist die Übertragung zu groß?
Vorschlag: Teile die Übertragung in 2 Teile auf.
Irgendwo schlägt ein Limit bei der Übertragung dieser großen message zu. Eventuell kann man mit dem seriellen Log mehr sehen.
Viele Grüße,
Tom

jp112sdl
Beiträge: 12116
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 849 Mal
Danksagung erhalten: 2150 Mal
Kontaktdaten:

Re: HB-Dis-EP-42BW - 4.2" ePaper Display

Beitrag von jp112sdl » 24.03.2019, 23:04

Wenn die Übertragung aufgrund Überschreitung der Nachrichtenlänge fehlschlägt, erscheint diese Meldung in der CCU:

/var/log/messages:

Code: Alles auswählen

user.err rfd: RFPhysicalDataInterfaceMultiframeCommand::PutData(): Amount of data exceeds defined limit.

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

TomMajor
Beiträge: 1793
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 175 Mal
Danksagung erhalten: 399 Mal
Kontaktdaten:

Re: HB-Dis-EP-42BW - 4.2" ePaper Display

Beitrag von TomMajor » 24.03.2019, 23:54

t0mk hat geschrieben:
24.03.2019, 09:36
@TomMajor: Danke, Dein Script ist ja ne Riesenerleichterung!

Aber: wenn die Nutzung der vordefinierten Textfelder das Funkkontigent schont, wie kann ich diese mit einem Script nutzen? Wäre natürlich schön, wenn TomMajors Script das auch gleich könnte :D

Danke und Gruß
Jetzt ist auch der support für die vordefinierten Textfelder im TCL skript drin.
Syntax im Prinzip die gleiche wie beim variablen Text, ich habe für die vordef. Texte den Character § als code benutzt.
Anwendung:

Code: Alles auswählen

Beispiel 4 - Vordefinierter Text
Zeigt den vordef. Text 4 auf Zeile 1, den vordef. Text 19 auf Zeile 9 und den vordef. Text 20 auf Zeile1 10 an, Zeile 1 zusätzlich mit Icon
string displayCmd = "JPDISEP000 /1 §04 6 /9 §19 /10 §20";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("tclsh /usr/local/addons/epaper42.tcl " # displayCmd);
Edit: vordef. Textfelder müssen jetzt immer 2 digits haben -> §04
Zuletzt geändert von TomMajor am 28.03.2019, 20:08, insgesamt 1-mal geändert.
Viele Grüße,
Tom

Dampfmotor
Beiträge: 99
Registriert: 20.03.2016, 11:32
Hat sich bedankt: 7 Mal
Danksagung erhalten: 2 Mal

Re: HB-Dis-EP-42BW - 4.2" ePaper Display

Beitrag von Dampfmotor » 25.03.2019, 21:10

jp112sdl hat geschrieben:
24.03.2019, 23:04
Wenn die Übertragung aufgrund Überschreitung der Nachrichtenlänge fehlschlägt, erscheint diese Meldung in der CCU:
Ist bei mir überschritten

Code: Alles auswählen

Mar 25 18:14:27 homematic-raspi user.err rfd: RFPhysicalDataInterfaceMultiframeCommand::PutData(): Amount of data exceeds defined limit.
Habe einige Nachkommastellen auf 0 gesetzt
ToString(0)
Das hat geholfen

Es ist nicht möglich, pro Zeile einen vordefinierten Text mit einem Sensorwert zu kombinieren?
So zum Beispiel.

Code: Alles auswählen

string displayCmd = "JPDISEP000 /1 '§4 " # temp # "'" 

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“