Klammern & Perl für Anfänger

Begonnen von Parador, 11 Dezember 2018, 21:21:35

Vorheriges Thema - Nächstes Thema

Parador

Hallo Zusammen,
sorry wenn ich wieder eine für Euch vermutlich simple Anfängerfrage stelle, aber ich kämpfe mit einem Fehler den ich nicht verstehe. Ich habe mir eine Prüfung gebastelt, die jeden Tag zu festen Zeit ablaufen soll und dann je nachdem Zähler in Dummy verändert... Das hat auch schon gut geklappt, aber plötzlich finde ich Fehlermeldungen in meinem Log und brauche hier mal Euere Unterstützung.

Hier meine AT-Definition:

*23:59:59 IF ([Benutzung_heute] > 0)
(
{
fhem("set Nichtnutzung_Tage 0");;
fhem("set Benutzung_heute 0");;
fhem("set Reinigung_heute 0");;
my $tageimjahr=ReadingsVal("Benutzung_Jahr", "state",0)+1;;
fhem("set Benutzung_Jahr $tageimjahr");;
}
)
ELSEIF ([Reinigung_heute] > 0)
(
{
fhem("set Nichtnutzung_Tage 0");;
fhem("set Reinigung_heute 0");;
}
)
ELSE
(
{
  my $anzahl=ReadingsVal("Nichtnutzung_Tage", "state",0)+1;;
  Log 3, "Prüfung um 24 Uhr - Nichtnutzung_Tage: $anzahl";;
  fhem("set Nichtnutzung_Tage $anzahl");; 
}
)


Ich erhalte nun aber den Hinweis im Log: "no left bracket"
Ich habe oben bereits versucht den Code so einzufügen, dass Ihr (und ich) sehen könnt, dass alle Klammern da sind.... was hab ich falsch gemacht? Ich sehe es nicht, oder kapiere es nicht...

Auch wenn Ihr noch etwas seht was ich einfach machen kann, bin ich für Euere Hinweise dankbar! ;-)
DANKE bereits im Voraus!

andies

Ich kapiere das nicht. Wenn das eine At-definition ist, müsste die mit defmod beginnen. Die eckigen Klammern sind dann was: setmagic (https://fhem.de/commandref_DE.html#set)? Ist das reiner Perl-Code? Der wäre aber doch anders:
if ($condition1)
{
  # do something
}
else
{
  # do the 'else' thing
}
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

KernSani

@andies: https://fhem.de/commandref.html#IF

ich glaube aber IF kann kein ELSEIF, das geht nur bei DOIF
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Parador

Ah, ok, das mit dem ELSEIF kann es sein...
kann ich dann im ELSE mit einem weiteren IF arbeiten? Geht das? Also weiter schachteln?, oder wie würdet Ihr das lösen?

amenomade

Ja, kein ELSEIF. Verschachtelte IFs geht.
Und warum den Umgang mit Perl???

*23:59:59 IF ([Benutzung_heute] > 0)
((set Nichtnutzung_Tage,Benutzung_heute,Reinigung_heute 0),set Benutzung_Jahr ([Benutzung_Jahr]+1))

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Parador

hm, ich würde mal sage, Copy & Paste aus einem anderen Script und bisher noch nicht anders gelernt ;-)
Danke für den Hinweis, warum kompliziert, wenn's auch einfach geht ;-)