rainmeter (tool) als gui mißbrauchen?

Begonnen von the ratman, 14 Januar 2016, 19:21:49

Vorheriges Thema - Nächstes Thema

the ratman

da ich gerne den rainmeter ( https://www.rainmeter.net/ ) für die überwachung meines pc's verwende, dachte ich, man könnte den doch missbrauchen, um sich werte aus fhem auszulesen, eventuell auch an fhem zu senden.
somit könnte man den desktop eines win-pc's als infozentrale verwenden, oder auch mal schnell eine lampe schalten, wenn man eh schon vorm bildschirm sitzt.

hat da schon wer was gebastelt und mag es teilen? leider siehts beim rainmeter ähnlich wie bei fhem aus - wirklich ahung vom scripten hab ich bei beiden nicht, wobei es bei fhem langsam wird *g*.
→do↑p!dnʇs↓shit←

AndreasB777

Bin damit noch ganz am Anfang, da mich die selbe Idee heute erst gepackt hat.
Sieht momentan so aus, muss allerdings an deine Bezeichner angepasst werden falls das so schon einen Wert für dich hat.

(http://puu.sh/nxkv6/b150961f5e.png)

[Rainmeter]
Update=1000
AccurateText=1
DynamicWindowSize=1

[MeasureSite_Bad]
Measure=Plugin
Plugin=WebParser
URL=http://192.168.2.132:8083/fhem?room=Bad
RegExp=(?siU)cmd='desired-temp'.*current='(.*)'></div>.*id="Bad.Heizung_Weather"  class="col2">(.*)</div>
UpdateRate=3600
Debug=2

[MeasureBadTempDesired]
Measure=Plugin
Plugin=WebParser
URL=[MeasureSite_Bad]
StringIndex=1

[MeasureBadTempSensor]
Measure=Plugin
Plugin=WebParser
URL=[MeasureSite_Bad]
StringIndex=2

[MeasureSite_WZ]
Measure=Plugin
Plugin=WebParser
URL=http://192.168.2.132:8083/fhem?room=Wohnzimmer
RegExp=(?siU)cmd='desired-temp'.*current='(.*)'></div>.*id="WZ.Heizung_Weather"  class="col2">(.*)</div>
UpdateRate=3600
Debug=2

[MeasureWZTempDesired]
Measure=Plugin
Plugin=WebParser
URL=[MeasureSite_WZ]
StringIndex=1

[MeasureWZTempSensor]
Measure=Plugin
Plugin=WebParser
URL=[MeasureSite_WZ]
StringIndex=2

[MeterDummy]
Meter=String

[MeterBackground]
Meter=Image
W=300
H=95
SolidColor=20,20,20,255

[MeterL0-Label]
Meter=String
X=5
Y=5
W=280
H=15
FontSize=11
FontColor=255,225,181,255
SolidColor=47,47,47,255
Padding=5,5,5,5
AntiAlias=1
Text=Heizungen
StringStyle=Bold

[MeterL0-1]
Meter=String
X=245
Y=0r
W=280
H=15
FontSize=11
FontColor=252,251,202,255
SolidColor=0,0,0,1
Padding=5,5,5,5
StringAlign=Right
AntiAlias=1
Text=soll
StringStyle=Bold

[MeterL0-2]
Meter=String
X=295
Y=0r
W=280
H=15
FontSize=11
FontColor=252,251,202,255
SolidColor=0,0,0,1
Padding=5,5,5,5
StringAlign=Right
AntiAlias=1
Text=ist
StringStyle=Bold

[MeterL1-Label]
Meter=String
X=5
Y=30r
W=280
H=15
FontSize=11
FontColor=255,225,181,255
SolidColor=47,47,47,255
Padding=5,5,5,5
AntiAlias=1
Text=Bad:

[MeterL1-1]
Meter=String
MeasureName=MeasureBadTempDesired
X=245
Y=0r
W=280
H=15
FontSize=11
FontColor=252,251,202,255
SolidColor=0,0,0,1
Padding=5,5,5,5
StringAlign=Right
AntiAlias=1

[MeterL1-2]
Meter=String
MeasureName=MeasureBadTempSensor
X=295
Y=0r
W=280
H=15
FontSize=11
FontColor=252,251,202,255
SolidColor=0,0,0,1
Padding=5,5,5,5
StringAlign=Right
AntiAlias=1

[MeterL2-Label]
Meter=String
X=5
Y=30r
W=280
H=15
FontSize=11
FontColor=255,225,181,255
SolidColor=47,47,47,255
Padding=5,5,5,5
AntiAlias=1
Text=Wohnzimmer:

[MeterL2-1]
Meter=String
MeasureName=MeasureWZTempDesired
X=245
Y=0r
W=280
H=15
FontSize=11
FontColor=252,251,202,255
SolidColor=0,0,0,1
Padding=5,5,5,5
StringAlign=Right
AntiAlias=1

[MeterL2-2]
Meter=String
MeasureName=MeasureWZTempSensor
X=295
Y=0r
W=280
H=15
FontSize=11
FontColor=252,251,202,255
SolidColor=0,0,0,1
Padding=5,5,5,5
StringAlign=Right
AntiAlias=1


Grüße

the ratman

uij, ganz vergessen gehabt *g*
muß ich eh wieder mal was machen und auch alle neuen sensoren eintragen.
ich möcht auch meine rollos per klick und % steuern - nur ist mir das zu gefhärlich, solang ich kein generelles steeurvrebot hinbekomme, damit mir die rollos nocht über öffene türen fahren.

aber zumindest freuts mich, dass ich nicht der einzige bin, der den rainmeter mißbraucht dafür ...
→do↑p!dnʇs↓shit←

AndreasB777

Ich werd da auf jeden Fall mal dran bleiben und schauen was so machbar ist mit Rainmeter - war nun zuletzt dabei einen setTemp Button zu konzipieren, für sowas braucht man dann wahrscheinlich aber noch eine php-file, welche den HTTP-POST im FHEM-Backend durchführt... mal sehen was da möglich ist :)

Zu mir selbst muss ich sagen - ich habe leider keine Rolladenmotoren und mein Smarthome hält sich in Grenzen, es steht selbst noch am Anfang.
Meine Komponenten sind dabei 3x Homematic Thermostat / 1x Wandthermostat / 1-2x LW12 LED Controller / SamsungTV / DenonAVR.

Dieses Steuerverbot müsste aber m.W. dann im Backend bzw. dem Ansprechmodul für deine Rollos geschehen.

the ratman

#4
nö, nix php du brauchst *g*

dazu in meinen files die WebPost.exe

rufst du dann z.b. so auf in rainmeter:
bspl. für ne lampe LeftMouseUpAction=["#CURRENTPATH#WebPost.exe" "http://XXX:8083/fhem?cmd.ZZZ=set ZZZ on"]#CURRENTPATH# = rainmeter interner pfad zum aktuellen skin. die WebPost.exe muß also nur dort liegen, wo deine ini liegt
XXX= ip deines fhem-servers
ZZZ der name der lampe
fatitsch!

zum steuerverbot:
ich hab da schon ne sehr fruchtlose diskussion mit nem mod - da muß jetzt erst mal mein beruhigungsmittel wirken, bevor ich weiter drüber nachdenken will.
aber, wenn dir was einfallt zu --> https://forum.fhem.de/index.php/topic,50146.15.html
→do↑p!dnʇs↓shit←

AndreasB777

#5
Schon gemerkt, sehr gut dass FHEM via GET kommuniziert.

Die WebPost.exe verrichtet demnach wohl ihre Arbeit ohne sichtbares Fenster?
Habe es aktuell soweit, eine Textbox via Enter bestätigen zu können woraufhin ein Browserfenster mit gewünschtem GET-Command sich öffnet, das sozusagen so executed.
Wenn WebPost.exe das ganze natürlich unsichtbar kann, ist das die bessere Lösung.
Doch wer ist davon der Autor/Erfasser?
Bzgl. Virensicherheit und eventueller Erweiterbarkeit.

Aktuell mein Problem ist den aufzurufenden Link zu verketten mit der Usereingabe, ohne dass der User doppelt eine Eingabe machen muss.
[Rainmeter]
Update=1000
AccurateText=1
DynamicWindowSize=1

[MeterInputLabel]
Meter=String
X=0
Y=0
W=30
H=18
FontSize=11
FontColor=170,170,170,255
SolidColor=47,47,47,255
Padding=5,6,5,4
StringStyle=Italic
AntiAlias=1
Text=.....
LeftMouseUpAction=[!CommandMeasure MeasureInput "ExecuteBatch 1-2"]

[MeasureInput]
Measure=Plugin
Plugin=InputText
X=5
Y=5
W=30
H=18
FontSize=11
FontColor=255,255,255,255
SolidColor=47,47,47,255
AntiAlias=1
FocusDismiss=1
DefaultValue=""
Command1=[!SetVariable iInput1 "$UserInput$"] DefaultValue="val?"
Command2=["http://192.168.2.132:8083/fhem?cmd=set%20WZ.Heizung_Clima%20desired-temp%20"][!SetOption MeterOutput Text ["#*iInput1*#"][!UpdateMeter *][!Redraw]

[MeterOutput]
Meter=String
X=30
Y=0
W=30
H=18
FontSize=11
FontColor=252,251,202,255
SolidColor=47,47,47,255
Padding=5,5,5,5
StringStyle=Italic
AntiAlias=1
DynamicVariables=1


Bei Command2=["http://192.168.2.132:8083/fhem?cmd=set%20WZ.Heizung_Clima%20desired-temp%20"][!SetOption MeterOutput Text ["#*iInput1*#"][!UpdateMeter *][!Redraw]
müsste man an den Link die Variable iInput1 hängen damit es richtig läuft, das klappt bei mir leider nicht. Wenn ich $UserInput$ dran hänge, klappt es unter dem Vorbehalt dass der User seine Eingabe doppelt eingeben muss (ein mal für den Link-Öffner, ein mal für die Anzeige).


Nachtrag:
Hab es nun aufgegeben, den Value noch mal in der GUI spiegeln zu wollen.
WebPost.exe habe ich mir noch nicht angesehen, wird evtl. demnächst geschehen.
Aktuell ist nun folgendes möglich:
Kann meine zwei wichtigen Thermostate auf soll/ist Basis ablesen und einen gewünschten Wert setzen, auf den die Heizung schalten soll.
Contra: Aktuell noch ohne WebPost.exe, also ein sichtbarer Vorgang beim switchen der Temps.
Bis dato afaik fehlerlos der Code:
[Rainmeter]
Update=1000
AccurateText=1
DynamicWindowSize=1

[MeasureSite_Bad]
Measure=Plugin
Plugin=WebParser
URL=http://192.168.2.132:8083/fhem?room=Bad
RegExp=(?siU)cmd='desired-temp'.*current='(.*)'></div>.*id="Bad.Heizung_Weather"  class="col2">(.*)</div>
UpdateRate=300
Debug=2

[MeasureBadTempDesired]
Measure=Plugin
Plugin=WebParser
URL=[MeasureSite_Bad]
StringIndex=1

[MeasureBadTempSensor]
Measure=Plugin
Plugin=WebParser
URL=[MeasureSite_Bad]
StringIndex=2

[MeasureSite_WZ]
Measure=Plugin
Plugin=WebParser
URL=http://192.168.2.132:8083/fhem?room=Wohnzimmer
RegExp=(?siU)cmd='desired-temp'.*current='(.*)'></div>.*id="WZ.Heizung_Weather"  class="col2">(.*)</div>
UpdateRate=3600
Debug=2

[MeasureWZTempDesired]
Measure=Plugin
Plugin=WebParser
URL=[MeasureSite_WZ]
StringIndex=1

[MeasureWZTempSensor]
Measure=Plugin
Plugin=WebParser
URL=[MeasureSite_WZ]
StringIndex=2

[MeterDummy]
Meter=String

[MeterBackground]
Meter=Image
W=300
H=95
SolidColor=20,20,20,255

[MeterL0-Label]
Meter=String
X=5
Y=5
W=280
H=15
FontSize=11
FontColor=255,225,181,255
SolidColor=47,47,47,255
Padding=5,5,5,5
AntiAlias=1
Text=Heizungen
StringStyle=Bold

[MeterL0-1]
Meter=String
X=175
Y=0r
W=280
H=15
FontSize=11
FontColor=252,251,202,255
SolidColor=0,0,0,1
Padding=5,5,5,5
StringAlign=Right
AntiAlias=1
Text=ist
StringStyle=Bold

[MeterL0-2]
Meter=String
X=220
Y=0r
W=280
H=15
FontSize=11
FontColor=252,251,202,255
SolidColor=0,0,0,1
Padding=5,5,5,5
StringAlign=Right
AntiAlias=1
Text=soll
StringStyle=Bold

[MeterL0-3]
Meter=String
X=270
Y=0r
W=280
H=15
FontSize=11
FontColor=252,251,202,255
SolidColor=0,0,0,1
Padding=5,5,5,5
StringAlign=Right
AntiAlias=1
Text=set
StringStyle=Bold

[MeterL1-Label]
Meter=String
X=5
Y=30r
W=280
H=15
FontSize=11
FontColor=255,225,181,255
SolidColor=47,47,47,255
Padding=5,5,5,5
AntiAlias=1
Text=Bad:

[MeterL1-1]
Meter=String
MeasureName=MeasureBadTempSensor
X=175
Y=0r
W=280
H=15
FontSize=11
FontColor=252,251,202,255
SolidColor=0,0,0,1
Padding=5,5,5,5
StringAlign=Right
AntiAlias=1

[MeterL1-2]
Meter=String
MeasureName=MeasureBadTempDesired
X=220
Y=0r
W=280
H=15
FontSize=11
FontColor=252,251,202,255
SolidColor=0,0,0,1
Padding=5,5,5,5
StringAlign=Right
AntiAlias=1

[MeterL1-3]
Meter=String
X=240
Y=35
W=30
H=15
FontSize=11
FontColor=170,170,170,255
SolidColor=47,47,47,255
Padding=5,5,5,5
StringStyle=Italic
AntiAlias=1
Text=.....
LeftMouseUpAction=[!CommandMeasure MeterL1-4 "ExecuteBatch 1-2"]

[MeterL1-4]
Measure=Plugin
Plugin=InputText
X=240
Y=40
W=30
H=15
FontSize=11
FontColor=255,255,255,255
SolidColor=47,47,47,255
Padding=5,5,5,5
AntiAlias=1
FocusDismiss=1
DefaultValue=""
Command1=["http://192.168.2.132:8083/fhem?cmd=set%20Bad.Heizung_Clima%20desired-temp%20$UserInput$"] DefaultValue="set?"
Command2=[!UpdateMeter *][!Redraw]

[MeterL2-Label]
Meter=String
X=5
Y=30r
W=280
H=15
FontSize=11
FontColor=255,225,181,255
SolidColor=47,47,47,255
Padding=5,5,5,5
AntiAlias=1
Text=Wohnzimmer:

[MeterL2-1]
Meter=String
MeasureName=MeasureWZTempSensor
X=175
Y=0r
W=280
H=15
FontSize=11
FontColor=252,251,202,255
SolidColor=0,0,0,1
Padding=5,5,5,5
StringAlign=Right
AntiAlias=1

[MeterL2-2]
Meter=String
MeasureName=MeasureWZTempDesired
X=220
Y=0r
W=280
H=15
FontSize=11
FontColor=252,251,202,255
SolidColor=0,0,0,1
Padding=5,5,5,5
StringAlign=Right
AntiAlias=1

[MeterL2-3]
Meter=String
X=240
Y=65
W=30
H=15
FontSize=11
FontColor=170,170,170,255
SolidColor=47,47,47,255
Padding=5,5,5,5
StringStyle=Italic
AntiAlias=1
Text=.....
LeftMouseUpAction=[!CommandMeasure MeterL2-4 "ExecuteBatch 1-2"]

[MeterL2-4]
Measure=Plugin
Plugin=InputText
X=240
Y=70
W=30
H=15
FontSize=11
FontColor=255,255,255,255
SolidColor=47,47,47,255
Padding=5,5,5,5
AntiAlias=1
FocusDismiss=1
DefaultValue=""
Command1=["http://192.168.2.132:8083/fhem?cmd=set%20WZ.Heizung_Clima%20desired-temp%20$UserInput$"] DefaultValue="set?"
Command2=[!UpdateMeter *][!Redraw]

the ratman

ZitatDie WebPost.exe verrichtet demnach wohl ihre Arbeit ohne sichtbares Fenster?
genau.
ich hatte eigentlich nach ner möglichkeit gesucht, direkt am desktop fhem darzustellen - aber nix funzendes gefunden. da bin ich zufällig da drüber gestolpert.
von wem das ist - keine ahnung. gefunden hab ichs irgendwo im offiziellen rainmeter forum und selber jetzt auf 3 rechnern am laufen seit anfang des jahres. zumindest mein virenkiller (360° total security) und auch der ferne auf meiner nas, findet keine viren. erweiterbarkeit - naja, ich könnte da eh nix machen und hab mich somit wenig drum gekümmert. können tut das ding - wenn ich mich recht erinnere - auch wirklich nix anderes, als nen dummen http post zu machen.

und jetzt zur wahrheit - mein wissen zu rainmeter ist recht begrenzt. ehrlich gesagt sind meine spielchen für fhem alles, was ich je damit getan hab, ausser ein paar grafiken anzupassen. ne große hilfe werd ich dir also nicht sein.
aber probier mal meinen "meassure fake"
[MeasureFake]
Measure=String
String=[originalvariable]
DynamicVariables=1
MinValue=0
MaxValue=100
dies nur als bspl. - verwend ich immer, wenn ich ne echte zahlenvariable brauch die als text vor liegt. gibt sicher eleganteres, aber es funzt bei mir.
also einfach die gewünschte[originalvariable] nochmal messen und schon hast z.b. aus text ne zahl gemacht.
→do↑p!dnʇs↓shit←

AndreasB777

Hehe, bei mir ist es eher andersrum.
Rainmeter ist mir seit bestimmt 5 Jahren ein Begriff, allerdings fange ich erst jetzt durch FHEM an, mir meine Plugins dafür zu schustern.
FHEM allerdings ist für mich Neuland. Habe es aufgesetzt, eingerichtet und funktioniert soweit als Skelett.
Ich denk ich lass das jetzt erst einmal wie es ist, die WebPost.exe kommt noch rein oder evtl. auch was eigens geschriebenes dann passt die Heizsteuerung schonmal soweit.

Wäre schön wenn man die pending CMDs etwas beschleunigen könnte... aber das ist wahrscheinlich ein Homematic-Problem.. Batteriesparend.^^

the ratman

ich bin ja auch neuling hier und hab noch keine heizungssteuerung *g* und wenn, dann wirds bei mir eher was von homemmatic.
wenn alles so lahm is, wie meine batterie zwave sensoren, dann ist allein dass schon ein grund.

btw. ich hab festgestellt, wenn ich beim rainmeter meine abfragen öfter als alle 2 sekunden mache, wirds ab einer gewissen anzahl an geräten eng. derzeit fahr ich abfragen alle 3 sekunden. ist zwar jetzt nicht wirklch ne flotte info, aber ich wollt bei mir eher ne übersicht am desktop, was generell so los is in meiner hausautomatisation. dass ich damit jetzt auch meine lampen dimme/schalte, war eher ein versuch, denn notwendigkeit.
langer rede, wenig sinn: ich glaub eh nicht, dass man mit rainmeter eine echtzeit-automatisation realisieren kann.
→do↑p!dnʇs↓shit←

AndreasB777

Echtzeit sowieso nicht, das Intervall muss eben angepasst werden irgendwo zwischen Komfort und Leistung.
Auf welchem Rechner läuft dein FHEM?

Ich selbst habe es auf einem rPi2 laufen der auch minimal übertaktet ist. Vorhin beim Debuggen und Testen meiner config ist es da hin und wieder schon mal vorgekommen, dass das ganze bei besonders vielen Requests sehr langsam wurde. Das liegt aber ganz normal am Pi.

Ich denke es ist zwar kein verkehrter Gedanke, jedoch am falschen Ende angepackt (alle 3s abfragen).
Denke es wäre besser (hierbei weiß ich noch nicht ganz wo der Rainmeter-Horizont ist), die Desktop-Widgets wie in einem Pull/Wait Mode zu haben, bei dem sie auf gewisse Events listenen, welche dann durch ein anderes Programm (C# sollte sich hier als Sprache anbieten) via Push hineingedrückt werden... denk mal das wäre am Effizientesten, aber ein langer langer Weg.

the ratman

ebenfalls raspi2 (1 ghz), wobei ich mir langsam den banana pi m3 übrleg. die smartvisu macht nicht gerade gschw.-weltrekorde auf dem raspi und das is (plus sprachbefehle am androiden) mein haupt-frontend.
hab nur das problem, dass perl ja eig. eh nur 1 kern nutzt und ich mich frag, was das wirklich bringen könnte ...

wenn du aber deinen wait in c hinbekommst bin ich der erste, der sich anmeldet.
wenn ich mir aber die reaktion von z.b. meinen hm-dimmern generell beim dimmen bei rainmeter anschau (habs aufgegeben wegen der verzögerten rückmeldung) ...fast schon sinnlos da das senden zu optimieren. noch schlimmer z.b. das empfangen von philips hue lampen, wenn die per philips-schaltern geschaltet wurden. da schlaft dir das gesicht ein beim warten. glaube kaum, dass dir da optimiertes senden/empfangen besonders viel bringen wird (kommt ja in fhem selber auch ned früher an), lasse mich aber liebend gern eines besseren belehren *g*.
→do↑p!dnʇs↓shit←

Jentaia

Hallöchen,

in Rainmeter habe ich mich jetzt etwas eingewurschtelt. Ist ja kein großes Ding, sich da eine GUI zu basteln, man benötigt vor allem grafisches Talent.

Aber Fhem ist für mich noch immer ein Buch mit 7 Siegeln. Es ist eigentlich das "Baby" von meiner besseren Hälfte. Das nützt mir aber nix, denn 3x dürft ihr raten, wer die Wäsche wäscht ;D.

Es wäre also super, wenn mir mal jemand den Befehl
ZitatRegExp=(?siU)cmd='desired-temp'.*current='(.*)'></div>.*id="Bad.Heizung_Weather"  class="col2">(.*)</div>
erklären könnte.

Ich bräuchte in Rainmeter nur den Status des "dummy" "WaschmaschineBetrieb". Dahinter ist in Fhem eine kleine Glühbirne. Solange die Maschine wäscht (Strom zieht), ist die an, sonst aus (hat der Mann ja soweit toll gemacht). Den Rest bekomme ich selbst hin.

RegExp=(?siU)cmd='WaschmaschineBetrieb'.*current='(.*)'></div>.*id="Steckdosen.dummy"  class="col2">(.*)</div>??

Der Herr hat ja ganz große Dinge vor mit Fhem, aber bis es soweit ist, habe ich mein Studium wahrscheinlich mehrfach beendet. Und kaputt machen möchte ich da lieber auch nichts, hoffe deshalb auf eure Hilfe :D

the ratman

#12
uje, ich hab rainmeter aufgegeben, weil ichs nicht geschafft hab, die abfragen zu begrenzen. irgendwann mal, hält dich der fhem server für nen angriff *g*.
mit aber nur einer abfrage sollts gehen - so alle paar sek. mal.

das https://forum.fhem.de/index.php/topic,48548.msg404761.html schon gefunden von mir.
da kannst dir bsbl. saugen. was dich angeht, schau dir die zip-datei aus beitrag 3 - homematik magnetkontakte an, die senden auch nur 2 zustände.
der abruf ansich rennt dann: URL=http://fhemip:8083/fhem?cmd.DEVICENAME=get DEVICENAME param state
→do↑p!dnʇs↓shit←

Jentaia

Ich danke dir schon mal und entschuldige mich, dass ich für die Antwort so lange gebraucht habe. Das Semester kam dazwischen  ::)

Werde mich dann mal weiter "durchwurschteln" und mich notfalls nochmal melden. So ganz langsam - Stunde für Stunde - werde ich auch etwas vertrauter mit FHEM, die SD-Karte ist nämlich zerbrochen, als der Herr ein Image davon machen wollte.