Autor Thema: OWDevice: Schalter mit Stateformat "Zu" / "Auf"  (Gelesen 5264 mal)

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 567
OWDevice: Schalter mit Stateformat "Zu" / "Auf"
« am: 20 August 2013, 20:12:41 »
Hallo Zusammen,

ich habe einen OWDevice, welcher mir als Status einen Text melden soll.

Hier mein Versuch, welcher aber nicht wirklich arbeitet... (Syntax Fehler)

define flDualInput1 OWDevice 3A.3CAA07000000 5
attr flDualInput1 model DS2413
attr flDualInput1 room Flur
attr flDualInput1 stateFormat { if( ReadingsVal("flDualInput1","Status_A","-") eq '0') { sprint("Zu") } else { sprint("Auf")} , \
                                if( ReadingsVal("flDualInput1","Status_B","-") eq '0') { sprint ("Zu")} else { sprint("Auf")} ;; }

attr flDualInput1 userReadings Status_A { ReadingsVal("flDualInput1","sensed.A","Auf") }, Status_B { ReadingsVal("flDualInput1","sensed.B","Auf");; }


Kann man innerhalb des State Formats auch eine IF durchführen ? Laut Doc. steht hier {.. perl code } .

Gruss
R.

APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 20340
Aw: OWDevice: Schalter mit Stateformat "Zu" / "Auf"
« Antwort #1 am: 20 August 2013, 20:33:14 »
Ja, allerdings der Ausdruck if...,if... ist mir (und vmtl auch perl) unbekannt.

Das sprintf ist zwar kein Fehler, ich sehe aber die Notwendigkeit nicht.

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 567
Aw: OWDevice: Schalter mit Stateformat "Zu" / "Auf"
« Antwort #2 am: 20 August 2013, 21:05:41 »
Stimmt, mein Fehler...

Ursprung ist dieser Teil:
attr klS0Zaehler stateFormat { sprintf("%.3f kWh  %.3f kW", ReadingsVal("klS0Zaehler","energy","--.---"), ReadingsVal("klS0Zaehler","power","--.---"));; }

Aber es ist ja auch ein String der hier zurückgegeben wird.


ich versuche jetzt wohl eher so was (ungetestet hier online getippt)


attr flDualInput1 stateFormat { sprintf("A: %s B: %s", getState(ReadingsVal("flDualInput1","sensed.A",0)),getState(ReadingsVal("flDualInput1","sensed.B",0))) ;; }t



Gruss R.
APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 567
Aw: OWDevice: Schalter mit Stateformat "Zu" / "Auf"
« Antwort #3 am: 21 August 2013, 21:33:59 »
Hier meine Lösung, falls es jemand gebrauchen kann:

für FHEM.cfg

define flDualInput1 OWDevice 3A.XXXXXXXX 5
attr flDualInput1 model DS2413
attr flDualInput1 alias Tuerschalter
attr flDualInput1 room Flur
attr flDualInput1 stateFormat { sprintf("Rechts: %s Links: %s", getBooleanStateOpenClose(ReadingsVal("flDualInput1","sensed.A",0)), getBooleanStateOpenClose(ReadingsVal("flDualInput1","sensed.B",0))) ;; }
attr flDualInput1 userReadings Status_A { ReadingsVal("flDualInput1","sensed.A","-") }, Status_B { ReadingsVal("flDualInput1","sensed.B","-");; }


99_myUtils.pm


#
# get back the given text for a boolean bit, like On/Off
#
sub getBooleanStateOpenClose($)
{
  my $stateVar = shift;
  my $ret = "unbekannt";

$stateVar=trim($stateVar);
if( $stateVar eq '1')
{
$ret = "Offen";
}

if( $stateVar eq '0')
{
$ret = "Geschlossen";
}

  return $ret;
}

APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

 

decade-submarginal