Ausgelesene HTTPMOD Werte in Zahl umwandeln

Begonnen von TobiasR, 12 Januar 2018, 09:31:58

Vorheriges Thema - Nächstes Thema

TobiasR

Hallo,

wenn ich ein Reading aus einer Webseite (HTTPMOD) erzeuge, ist der Wert keine Zahl und ich kann deshalb nicht damit Rechnen uder mit < und > vergleichen.
Was und wo muss ich tun um das zu verändern, also aus einem String ein Int machen?

Tobias

JoWiemann

Hallo Tobias,

wenn Du dich etwas mit Perl beschäftigen würdest, würdest Du die Antwort sehr schnell finden und verstehen. Und, diese Frage wurde schon des Öfteren gestellt. Also bitte nicht andere suchen lassen.


Gesendet von iPad mit Tapatalk

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

TobiasR

Danke für deine überaus hilfreiche Antwort.
Hilfst du immer so schlau weiter......

JoWiemann

Ja, immer dann, wenn die Antwort schnell selber auffindbar ist. Oder ist es Zuviel verlangt mit den Begriffen ,,Perl String to Int" zu googeln. Mal davon abgesehen, dass Deine Frage so allgemein gehalten ist, dass kein spezielles Problem erkennbar ist.


Gesendet von iPad mit Tapatalk

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

DD

Hallo,

evtl. habe ich das gleiche Problem.
Die Umwandlung eines Zeichens läuft über "int($string)"

Nun ist es aber bei mir so dass ich den Wert aus einem Reading hohle und so recht nicht weis ob und wo ich so eine Umwandlung einbauen müsste:

(
["Heizung", "Wohnzimmer" > "Heizung", "Warmepumpe_VL"]
)
(
{
my $Sensor_Wohnzimmer=ReadingsVal("Heizung", "Wohnzimmer", "--");;
my $Sensor_Vorlauf=ReadingsVal("Heizung", "Warmepumpe_VL", "--");;
DebianMail('name@domain.com',
             'Warnung Wärmepumpe ausfall',
             'Die Wärmepumpe ist u.U. ausgefallen! \nVorlauftemperatur der Heizung: '.$Sensor_Vorlauf.'°C \nTemperatur der Wohnung: '.$Sensor_Wohnzimmer.'°C');;
}
)


Problematisch ist die Prüfzeile. Hier spielt es keine Rolle ob ich > oder < hinschreibe. In beiden Fällen wird immer eine Mail erzeugt

JoWiemann

Hallo <> und = sind für Zahlen. Für Zeichenketten nimmt man eq, ne . Also ,,1" eq ,,1" und ,,1" ne ,,2".


Gesendet von iPhone mit Tapatalk

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

DD

dehalb muss ich ja auch umwandeln bevor ich den Vergleich mache.
Ich verstehe nur nicht wie ich die Umwandlung hier einbauen muss

JoWiemann

,,1" x 1 < ,,2"  x 1


Gesendet von iPhone mit Tapatalk

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

DD

o.k.
Ich habe aber erst einmal den Verweis auf das Reading:

["Heizung", "Wohnzimmer" > "Heizung", "Warmepumpe_VL"]

Wie muss ich das da machen?

JoWiemann

Ich verstehe Deine Frage nicht!


Gesendet von iPhone mit Tapatalk

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

DD

hmm,

in meinem DOIF frage ich die Readingwerte einer DOIF ab:
["Heizung", "Wohnzimmer" > "Heizung", "Warmepumpe_VL"]
Ich bekomme aber immer nur dann eine Email wenn ich abspeichere. Dabei ist es egal ob ich < oder > einsetze.
Deshalb vermute ich dass ich hier Stringwerte und keine Zahlen habe.

JoWiemann

Poste doch mal bitte alles und wo kommen die [] vor. Ist das doif?


Gesendet von iPhone mit Tapatalk

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

DD

Hier mein List:

Internals:
   DEF        (
["Heizung", "Wohnzimmer" x 1 > "Heizung", "Warmepumpe_VL" x 1]
)
(
{
my $SWohnzimmer=ReadingsVal("Heizung", "Wohnzimmer", "--");;
my $Vorlauf=ReadingsVal("Heizung", "Warmepumpe_VL", "--");;
DebianMail('name@domain.com',
             'Warnung Wärmepumpe ausfall',
             'Die Wärmepumpe ist u.U. ausgefallen! \nVorlauftemperatur der Heizung: '.$Sensor_Vorlauf.'°C \nTemperatur der Wohnung: '.$Sensor_Wohnzimmer.'°C');;
}
)
   NAME       Warnung_Heizung
   NR         491
   NTFY_ORDER 50-Warnung_Heizung
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2018-01-12 21:20:54   Device          Status_Heizung
     2018-01-12 21:13:25   cmd             1
     2018-01-12 21:13:25   cmd_event       Status_Heizung
     2018-01-12 21:13:25   cmd_nr          1
     2018-01-12 21:20:54   matched_event_c1_1 Terrasse: 5.0,Warmepumpe_VL: 21.4,Heizraum: 12.6,Wohnzimmer: 23.0
     2018-01-12 21:13:25   state           cmd_1
   condition:
     0           EventDoIf('Status_Heizung',$hash,'',0,'[^\:]*: (.*)','','Wohnzimmer" x 1 > "Status_Heizung')
   devices:
   do:
     0:
       0           { my $Sensor_Wohnzimmer=ReadingsVal("Heizung", "Wohnzimmer", "--");; my $Sensor_Vorlauf=ReadingsVal("Heizung", "Warmepumpe_VL", "--");; DebianMail('name@domain.com',              'Warnung Wärmepumpe ausfall',              'Die Wärmepumpe ist u.U. ausgefallen! \nVorlauftemperatur der Heizung: '.$Sensor_Vorlauf.'°C \nTemperatur der Wohnung: '.$Sensor_Wohnzimmer.'°C');; }
     1:
   helper:
     event      Terrasse: 5.0
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   SHeizung
     timerevent Terrasse: 5.0
     triggerDev Heizung
     timerevents:
       Terrasse: 5.0
       Warmepumpe_VL: 21.4
       Wohnzimmer: 23.0
     timereventsState:
       Terrasse: 5.0
       Warmepumpe_VL: 21.4
       Wohnzimmer: 23.0
     triggerEvents:
       Terrasse: 5.0
       Warmepumpe_VL: 21.4
       Wohnzimmer: 23.0
     triggerEventsState:
       Terrasse: 5.0
       Warmepumpe_VL: 21.4
       Wohnzimmer: 23.0
   internals:
   itimer:
   readings:
   regexp:
     0:
       0          Heizung
     all:
       0          Heizung
   state:
     STATE:
   trigger:
Attributes:
   room       Mail

JoWiemann

Hm, ich nutze doif nicht. Aber Dein [] Ausdruck wird wohl so nicht der Syntax entsprechen. Vermutung wäre [...] > [...]. Ich bin mir allerdings sicher, dass das mit googeln von: ,, Fhem doif < > Vergleich" zu einem Treffer mit Beispiel führt.


Gesendet von iPhone mit Tapatalk

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

DD

o.k. Danke.
Vielleicht ist auch DOIF nicht richtig dafür. Ich suche mal weiter