Uconv.pm Beschreibung der Subroutinen calls

Begonnen von ch.eick, 24 Januar 2020, 14:25:56

Vorheriges Thema - Nächstes Thema

ch.eick

Hallo zusammen,

ich habe nur sehr sperliches zu Uconv gefunden und würde es gerne verwenden.

Leider finde ich keine Info zu den Funktionsaufrufen und wir haben in einem anderen Thread bereits etwas lösen können.

Hier geht es um Umrechnungen von wunderground und diese Funktionen konnten wir bereits verwenden.

attr device reading02Name dewpointTemperature
attr device reading02OExpr UConv::f2c($val,2)
attr device reading02Regex DEWPOINT.*>([\d\.]+)<.*HUMIDITY

attr device reading07Name pressure
attr device reading07OExpr UConv::inhg2hpa($val,2)
attr device reading07Regex CURRENT.*>([\d\.]+)<.*tile-pressure

attr device reading11Name temperature
attr device reading11OExpr UConv::f2c($val,2)
attr device reading11Regex current-temp.*">([- ]*[\d\.]+).*DEWPOINT

attr device reading13Name windChill
attr device reading13OExpr UConv::f2c($val,2)
attr device reading13Regex Feels Like.*>([\d\.]+)<.*wind-dial__container

attr device reading17Name windSpeed
attr device reading17OExpr UConv::mph2kph($val,1)
attr device reading17Regex wind-dial__container.*>([\d\.]+)<.*unit-speed

attr device reading19Name windGust
attr device reading19OExpr UConv::mph2kph($val,1)
attr device reading19Regex GUST.*>([\d\.]+)<.*mph



Im Source Code habe ich jedoch auch etwas für das Ummappen von Himmelsrichtungen in die verschiedenen Sprachen gefunden, jedoch bin ich dem Code nicht so mächtig.
Wie würde z.B. der Funktionsaufruf für das Mappen von "en","ESE" nach "de","OSO" lauten?

attr device reading15Name windDirection
attr device reading15OMap E:O, NE:NO, SE:SO, ENE:ONO, NNE:NNO, ESE:OSO, SSE:SSO
attr device reading15Regex WIND FROM.*>([NESW]+)<.*GUST



Gruß
    Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Moin,

ich habe dies noch in einem anderen thread gefunden, was hierzu besser passt.
https://forum.fhem.de/index.php/topic,59646.msg1017223.html#msg1017223


Zitat von: münster am 25 Januar 2020, 20:57:12
Hab jetzt doch noch ein kleines Thema zu o.g. Umsetzung.

Hab nun folgende Meldung im Hauptbildschirm. :

Messages collected while initializing FHEM:
configfile: Invalid Expression UConv::f2c($val,1)
Invalid Expression UConv::inhg2hpa($val,0)
Invalid Expression UConv::f2c($val,2)
Invalid Expression UConv::f2c($val,2)
Invalid Expression UConv::mph2kph($val,1)
Invalid Expression UConv::mph2kph($val,1)


Dachte nach Einbindung von

define uconvInit notify global:INITIALIZED {use UConv}

können die erforderlichen Umrechnungen gemäß ch.eick ´s Code abgerufen und umgerechnet werden.

attr device reading11Name temperature
attr device reading11OExpr UConv::f2c($val,2)
attr device reading11Regex current-temp.*">([- ]*[\d\.]+).*DEWPOINT


Warum kommt nun diese Meldung? Fehlt noch was?
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Loredo

#2
UConv ist mehrheitlich für die Modulentwicklung gedacht. Natürlich kann man es auch anderweitig verwenden, wenn man weiß wie. Da gibt es aber keinerlei Garantie usw ;)
Um es zu verwenden, muss man es am besten in 99_myUtils als "use UConv;" laden. Auf das globale INITIALIZED Event nach dem Start von FHEM zu warten ist zu spät, denn beim laden der Konfiguration müssen die Funktionen bereits geladen sein, um sie dort auch verwenden zu können.


Zitat von: ch.eick am 24 Januar 2020, 14:25:56
Im Source Code habe ich jedoch auch etwas für das Ummappen von Himmelsrichtungen in die verschiedenen Sprachen gefunden, jedoch bin ich dem Code nicht so mächtig.
Wie würde z.B. der Funktionsaufruf für das Mappen von "en","ESE" nach "de","OSO" lauten?


Eine solche Funktion existiert derzeit nicht, um quasi von einer Sprache in die andere zu übersetzen. Du musst mit dem numerischen Winkelwert mittels UConv::direction2compasspoint() eine Umwandlung in die jeweilige Sprache durchführen.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

mahowi

Danke für die Klarstellung. Ich habe den Wiki-Artikel auch entsprechend abgeändert. Dort wurde nämlich der Weg über das Notify empfohlen.
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

Loredo

Zitat von: Loredo am 04 Februar 2020, 11:06:20
Eine solche Funktion existiert derzeit nicht, um quasi von einer Sprache in die andere zu übersetzen.


Ab morgen tut sie es. Habe gerade zwei Funktionen dafür eingecheckt:


UConv::compasspoint2compasspoint()
UConv::compasspoint2direction()
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

ch.eick

Vielen Dank Loredo,

ich habe es dann nun wie folgt umgesetzt und es läuft auch :-)


reading15Name  windDirection
reading15OExpr  UConv::compasspoint2compasspoint(UConv::compasspoint2direction($val,"en"),"de")



$Id: UConv.pm 21116 2020-02-04 12:41:08Z loredo $


Viele Grüße
     Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Loredo

Etwas umständlich beide Funktionen zu verwenden, die erste kann das auch alleine :)
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

ch.eick

#7
Zitat von: Loredo am 07 Februar 2020, 01:09:52
Etwas umständlich beide Funktionen zu verwenden, die erste kann das auch alleine :)
Hm,
bei mit spuckt "UConv::compasspoint2compasspoint( $shortTxt, $fromLang, $txt, $toLang )" immer nur einen Winkel aus.

UConv::compasspoint2compasspoint("O","DE",,"EN")   ==> 90


könntest Du mir dann bitte mal einen Beispielaufruf schicken? Das wäre sehr nett und ich müsste nicht weiter experimentieren. Ansonsten steht ja auch ein schlechtes Beispiel hier im Forum und ich würde es gerne korrigieren.
Vielen Dank
     Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Loredo

#8
Ich habe den Code jetzt so angepasst, dass undef für den dritten Parameter $txt korrekt interpretiert wird.

$txt beeinflusst das Ausgabeformat wie folgt

undef = Ausgabe erfolgt im selben Format wie die Eingabe
0 = nummerisch
1 = Kurztext
2 = Langtext
3 = Symbol / Emoji
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

ch.eick

Hallo nochmal und vielen, vielen Dank.

nun passt es

{ UConv::compasspoint2compasspoint("ESE","en",1,"de") }
OSO

War das jetzt meine Unwissenheit, oder ist das jetzt eine Erweiterung?
Ich denke, dass waere eine schoene Ergaenzung fuer das Wiki, denn es gibt sicher haefiger Umwandlungen.

Viele Gruesse
     Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Loredo

halbe Unwissenheit, hättest den $txt Parameter auch entsprechend setzen können statt ihn undefiniert zu lassen ;-)
Wiki darf gerne von jemand anderem gepflegt werden...
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

ch.eick

Zitat von: Loredo am 17 Februar 2020, 00:10:13
halbe Unwissenheit, hättest den $txt Parameter auch entsprechend setzen können statt ihn undefiniert zu lassen ;-)
Wiki darf gerne von jemand anderem gepflegt werden...
Ich bin halt aus dem Sourcecode Lesen etwas länger raus und Perl wird irgendwann sicher besser bei mir.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick