FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: cobra112 am 14 Juni 2014, 20:13:26

Titel: [gelöst] Anfänger braucht Hilfe bei Perlcode
Beitrag von: cobra112 am 14 Juni 2014, 20:13:26
Hi

Hab jetzt mit Fhem angefangen und ein paar Problme.
Mein code schaut so aus:

Nicht wundern wegen TV ist nur zum Testen.

Zitatdefine DectTv_Meldung THRESHOLD DectTV:power:0:70|{Log 2,"TV läuft"}|{fhem("set DectTV on");;;;pushmsg set msg ("TV ist fertig")}|0
attr DectTv_Meldung number_format %.1f
attr DectTv_Meldung room Hof
attr DectTv_Meldung state_cmd1_gt off
attr DectTv_Meldung state_cmd2_lt on
attr DectTv_Meldung state_format _m _dv
attr DectTv_Meldung verbose 5

Und Nr 2

Bei Anruf von einer bestimmten Nummer an eine bestimme soll das Tor aufgehen.

define Telefontestneu notify callmonitor:event:.ring { \
  my $extNr=(ReadingsVal("callmonitor","external_number","99"))\
  my $intNr=(ReadingsVal("callmonitor","internal_number","99"))\
if ($extNr == "093******")\
if ($intNr == "524****") {\
      fhem "set DectTV on";;;;\
  } \
}
attr Telefontestneu room FBDECT
attr Telefontestneu verbose 5

MFG
Cobra
Titel: Antw:Anfänger braucht Hilfe bei Perlcode
Beitrag von: Puschel74 am 14 Juni 2014, 21:47:40
Hallo,

kommt da noch was oder war das schon alles?

Grüße
Titel: Antw:Anfänger braucht Hilfe bei Perlcode
Beitrag von: cobra112 am 14 Juni 2014, 22:00:06
Was soll noch kommen?

Hier noch ein Logauszug


2014.06.14 21:50:45 4: Telefontestneu exec {
  my $extNr=(ReadingsVal("callmonitor","external_number","99"))
  my $intNr=(ReadingsVal("callmonitor","internal_number","99"))
if ($extNr == "093****")
if ($intNr == "52****") {
      fhem "set DectTV off";;;;
  }
}
2014.06.14 21:50:45 3: Telefontestneu return value: syntax error at (eval 1685) line 3, near ")
  my "
Global symbol "$intNr" requires explicit package name at (eval 1685) line 3.
Global symbol "$extNr" requires explicit package name at (eval 1685) line 4.
Global symbol "$intNr" requires explicit package name at (eval 1685) line 5.
syntax error at (eval 1685) line 8, near "}
}"
Titel: Antw:Anfänger braucht Hilfe bei Perlcode
Beitrag von: Puschel74 am 14 Juni 2014, 22:11:43
Hallo,

keine Ahnung.

Was nicht funktioniert?
Was nicht klappt?
Welche Fehlermeldungen du bekommst?
Wie du es gerne hättest das es klappen sollte?

Lies dir doch deinen Beitrag nochmal durch und überleg mal ob ein Aussenstehender damit auf deine Frage kommen könnte/sollte.

Du hast grad mit FHEM angefangen - ok, das sieht man auch im Titel. Änder den mal ab auf was aussagekräftiges bitte.
http://forum.fhem.de/index.php/topic,16311.0.html (http://forum.fhem.de/index.php/topic,16311.0.html)
Deine Codes schauen so aus - ist auch gut. Warum ein Code in Zitat-Tags und der zweite nicht?
Codes sollten in Code-Tags.
Siehe verlinkter Beitrag.

ZitatBei Anruf von einer bestimmten Nummer an eine bestimme soll das Tor aufgehen.
Ja, und weiter?

Wir(Ich) geh mal davon aus da klappt was nicht.
Kann sein - was sollen wir machen?
Deine Umgebung nachbauen?
Dazu fehlen noch Angaben zu Hardware.
Aber das muss ja nicht sein - erklär einfach nur was du willst, was du hast, was nicht geht und poste - schau im verlinkten Beitrag bitte.
Ich schreib nicht alles x-mal.
Du willst Hilfe - tut mir leid aber dann musst DU erstmal lesen.
Wir WOLLEN helfen - aber wir wollen den Hilfesuchenden nicht alles aus der Nase ziehen.
Dafür gibt es die angepinnten Beiträge.
Danke für deine Mithilfe damit WIR dir helfen können DEIN Problem zu lösen.

Grüße
Titel: Antw:Anfänger braucht Hilfe bei Perlcode
Beitrag von: franky08 am 14 Juni 2014, 22:12:22
Ja und was will uns das sagen ??? Was geht nicht oder was ist das Problem? Was für eine Hardware setzt du ein?

So wird dir keiner helfen können.

VG
Frank
Titel: Antw:Anfänger braucht Hilfe bei Perlcode
Beitrag von: franky08 am 14 Juni 2014, 22:13:12
@ Puschel

Eindeutig schneller  8)
Titel: Antw:Anfänger braucht Hilfe bei Perlcode
Beitrag von: Puschel74 am 14 Juni 2014, 22:17:25
@franky
Ich bin mal gespannt ob das was bringt.
Am Ende bin ich wieder der böse  ::)
Titel: Antw:Anfänger braucht Hilfe bei Perlcode
Beitrag von: franky08 am 14 Juni 2014, 22:20:25
Na, wie immer  ;D
P.S Was mir sehr weitergeholfen hat, (will hier keine Werbung machen) ist "Programmieren lernen mit Perl". Das Buch ist Klasse!
Titel: Antw:Anfänger braucht Hilfe bei Perlcode
Beitrag von: Puschel74 am 14 Juni 2014, 22:33:36
Hallo,

ZitatDas Buch ist Klasse!
Jep, das stimmt.
Aber im bisher geposteten Code habe ich nicht wirklich was gesehen wozu man diese Buch bräuchte.
99% sind im Wiki und im Forum zu finden und das 1% bin ich selbst noch am suchen  ::)

Grüße
Titel: Antw:Anfänger braucht Hilfe bei Perlcode
Beitrag von: cobra112 am 14 Juni 2014, 22:36:34
Hi

Ok Dann fang ich mal von vorne an.

Hardware:

Cubietruk mit Fhem
HMLAN
5x Dect200
Fritzbox 7490
Handsender 4 Tasten
HM-Tür-Fensterkontakt HM-Sec- Sc-2
HM-Batterieschalter HM-LC-Sw1Ba, Fürs Tor

Was ich möchte:

Ich hätte gerne das ich meine Fritbox anrufe und mein Schiebetor auf oder zu geht.
Zur Sicherheit nur von meiner Nummer aus und auch nur bei einer bestimmen Nummer auf der Fritzbox.
Das ganze brauch ich für 10 Handynummern. Schöne wäre eine Pushmeldung auf mein Handy.

Zweitens hätte ich gerne eine pushmeldung auf mein Handy wenn die Waschmaschine fertig ist.

Vielen Dank im voraus und Entschuldigung für mein ersten Beitrag.



MFG
Cobra



Titel: Antw:Anfänger braucht Hilfe bei Perlcode
Beitrag von: Puschel74 am 14 Juni 2014, 22:49:08
Hallo,

du brauchst dich nicht entschuldigen.

Aber was immer noch fehlt ist
x) was hast du bisher
x) was geht nicht
x) welche Fehlermeldungen bekommst du.

Was es hier nicht gibt:
Ich hab a und b und c - liefert mir nen Code der funktioniert.

Lies dir doch bitte erstmal die angepinnten Beiträge durch - die sind ja nicht deswegen angepinnt damit der Platz für Anfängerfragen belegt ist  ;)

Wie schon geschrieben:
Die FREIWILLIG Helfenden hier haben kein Problem damit zu HELFEN.
Es wird "nur" (zuviel?) erwartet das die Hilfesuchenden sich auch mal ein bischen einlesen um den Helfenden die freiwillige "Arbeit" etwas leichter zu machen.

Danke für deine Mithilfe um den Helfenden auch ein bischen Freizeit zu ermöglichen.
(Mir ist schon klar, niemand wird hier gezwungen zu helfen  ;D ).

Grüße
Titel: Antw:Anfänger braucht Hilfe bei Perlcode
Beitrag von: cobra112 am 14 Juni 2014, 23:07:28
Hi

Code steht oben und Fehlermeldung.

define Telefontestneu notify callmonitor:event:.ring { \
  my $extNr=(ReadingsVal("callmonitor","external_number","99"))\
  my $intNr=(ReadingsVal("callmonitor","internal_number","99"))\
if ($extNr == "093813322")\
if ($intNr == "5242421") {\
      fhem "set DectTV off";;;;\
  } \
}

Fehlermeldung:
Telefontestneu return value: syntax error at (eval 207) line 3, near ")
  my "
Global symbol "$intNr" requires explicit package name at (eval 207) line 3.
Global symbol "$extNr" requires explicit package name at (eval 207) line 4.
Global symbol "$intNr" requires explicit package name at (eval 207) line 5.
syntax error at (eval 207) line 8, near "}
}"


Ohne Internal_nummber gehts.

Ich kann  mein Tor auffahren wenn ich mit mein Handy anrufe, Blöd ist halt es geht immer auf oder zu wenn ich anrufe da es auf jeder Nummer reagiert.

Mit der Waschmaschine.

define Waschmaschiene_Meldung THRESHOLD Waschmaschine:power:0:2|{Log 2,"Waschmaschine läuft"}|{fhem("set Waschmaschine on");;;;pushmsg msg ("Waschmaschine ist fertig")}|0

Fehlermeldung: Undefined subroutine &main::msg called at (eval 160) line 1.

MFG
Cobra

Titel: Antw:Anfänger braucht Hilfe bei Perlcode
Beitrag von: Puschel74 am 14 Juni 2014, 23:46:44
Hallo,

liest du dir die Beiträge auch durch?

ZitatOhne Internal_nummber gehts.
Na dann

Ich bin nur Moderator - aber alle hier MÜSSEN nicht helfen wenn DU nicht lesen willst.

ZitatCode steht oben und Fehlermeldung.
Toll. Das ist mal ein passender Hinweis für die Helfenden  :o

Aber andererseits - lass die Finger von der fhem.cfg
Bei mir schliessen alle Variablenzuweisungen mit einem Semikolon ab - das fehlt bei dir.
Daher auch die Hinweismeldung.

Tipp am Rande. Lies dir mal die angepinnten Beiträge durch (oder lass es wenn du hier keine Hilfe suchst).
Danke.

Grüße
Edith: Schon zweimal auf die angepinnten Beiträge hingewiesen - lesen muss jeder selbst.
Titel: Antw:Anfänger braucht Hilfe bei Perlcode
Beitrag von: cobra112 am 15 Juni 2014, 00:19:35
Hi

Dachte eigentlich hab alles wichtige gepostet.

Waschmaschine hab ich hinbekommen. Hab den Befehl einfach geteilt in 2 defines, bekomme es einfach nicht hin 2 oder mehr befehle in einer define zuschreiben.
Könnte mir bitte einer sagen wo die Semikolons hinmüssen hab jetzt alles probiert.

MFG
Cobra
Titel: Antw:Anfänger braucht Hilfe bei Perlcode
Beitrag von: Heiko R. am 15 Juni 2014, 02:07:23
Schau mal  nach fehlenden Semikolons und der Part nach fhem könnte Klammern vertragen.

Gruß
Heiko
Titel: Antw:Anfänger braucht Hilfe bei Perlcode
Beitrag von: cobra112 am 15 Juni 2014, 14:56:47
Hi

Danke bin am Testen, bis jetzt geht nix.

Gibt es eine Anleitung mit beispielen und Erklärungen zum Perlcode? Hab nix gefunden.

Zitat2014.06.15 14:49:45 4: Telefontestneu exec {
  my $extNr=(ReadingsVal("callmonitor","external_number","99"))
  my $intNr=(ReadingsVal("callmonitor","internal_number","99"))
  if ($extNr == "09xxxxxx")
  if ($intNr == "5xxxxxx")\;;;;{
      fhem "set DectTV off"
      fhem "set pushmsg msg" 'Fhem' 'Test123456' 0 "";;;;
  }
}
2014.06.15 14:49:45 3: Telefontestneu return value: syntax error at (eval 18468) line 3, near ")
  my "
Global symbol "$intNr" requires explicit package name at (eval 18468) line 3.
Global symbol "$extNr" requires explicit package name at (eval 18468) line 4.
Global symbol "$intNr" requires explicit package name at (eval 18468) line 5.
syntax error at (eval 18468) line 7, near ""set DectTV off"
      fhem "

MFG
Cobra
Titel: Antw:Anfänger braucht Hilfe bei Perlcode
Beitrag von: Heiko R. am 15 Juni 2014, 15:37:49
Hallo,

Puschel und ich haben Dir gesagt, wo die Fehler liegen. Wenn Du das nicht liest und die Fehler nicht beseitigst, bleiben sie auch. Die Fehlermeldungen sagen Dir klar, wo die Fehler liegen. Und wenn Du Dir jetzt noch mal meinen letzten Post durchliest, solltest Du wissen, was die Fehler sind. Du musst die Beiträge auch lesen, sonst wird das nichts.

Grüße
Titel: Antw:Anfänger braucht Hilfe bei Perlcode
Beitrag von: cobra112 am 15 Juni 2014, 16:04:15
Hi

Ich habe es gelesen, aber nicht verstanden.
Hab null Plan von Perl. bin seit 3 Std am Lesen und testen.

MFG
Cobra
Titel: Antw:Anfänger braucht Hilfe bei Perlcode
Beitrag von: Heiko R. am 15 Juni 2014, 16:16:10
Hallo,

als ich mit fhem angefangen bin, wusste ich auch nur, dass es Perl gibt. Aber im Netz gibt es viele gute Tutorials. Tante G. kennt die auch.

Fangen wir mal damit an, dass jede Befehlszeile mit einem Semikolon beendet wird. Innerhalb von fhem müssen es zwei sein. Für eine neue Zeile folgt dann ein Backslash.

Grüße
Titel: Antw:Anfänger braucht Hilfe bei Perlcode
Beitrag von: cobra112 am 15 Juni 2014, 18:38:18
Hi

Ich verzweifel gleich.

Mein Code:

{ \
  my $extNr == (ReadingsVal("callmonitor","external_number","99"));;\
  my $intNr == (ReadingsVal("callmonitor","internal_number","99"));;\
  if ($extNr == "0xxxxxx");;\
  if ($intNr == "5xxxxx") ;;\
      { fhem("set DectTV off ;; set Lichtgang on") }}


Der Log:

2014.06.15 18:34:59 4: Telefontestneu exec {
  my $extNr == (ReadingsVal("callmonitor","external_number","99"));;
  my $intNr == (ReadingsVal("callmonitor","internal_number","99"));;
  if ($extNr == "0xxxxxx");;
  if ($intNr == "5xxxxxx") ;;
      { fhem("set DectTV off ;; set Lichtgang on") }}
2014.06.15 18:34:59 3: Telefontestneu return value: syntax error at (eval 22071) line 4, at EOF
syntax error at (eval 22071) line 5, at EOF


Fehlt da noch eine Klammer oder Semikolon?

MFG
Cobra
Titel: Antw:Anfänger braucht Hilfe bei Perlcode
Beitrag von: maxritti am 15 Juni 2014, 19:42:25
Also ich würde das ganze, was Du ausführen möchtest, wenn Dein notify wirksam wird schon mal in eine eigene Utils.pm auslagern.
Dann entfallen schon mal die mehrfachen ; und auch die Backslahes.

Schau dazu mal hier:

http://www.fhemwiki.de/wiki/99_myUtils_anlegen

Das Notify sollten dann etwas kürzer in etwa so aussehen:

define Telefontestneu notify callmonitor:event:.ring { MeineFunktionInDerMyUtils()}
attr Telefontestneu room FBDECT
attr Telefontestneu verbose 5


Und diese MeineFunktionInDerMyUtils schaut in etwa so aus:

sub MeineFunktionInDerMyUtils(){
  my $extNr == (ReadingsVal("callmonitor","external_number","99"));
  my $intNr == (ReadingsVal("callmonitor","internal_number","99"));
  if (($extNr eq "0xxxxxx") && ($intNr eq "5xxxxxx")) {
    fhem("set DectTV off; set Lichtgang on")
  }
}


Wegen dem Perl if kannst Du mal hier schauen:

http://www.tizag.com/perlT/perlif.php
Titel: Antw:Anfänger braucht Hilfe bei Perlcode
Beitrag von: cobra112 am 15 Juni 2014, 22:15:31
Hi

Vielen Dank für die Hilfe.

Ich bekomme jetzt schon mal keine Fehlermeldung.
Es passiert aber auch nix. Im Log steht nur der code mehr nicht.

Hab jetzt aber verstanden wo die ; \ usw hinkommen hat mir bei anderen Sachen sehr geholfen.

MFG
Cobra
Titel: Antw:Anfänger braucht Hilfe bei Perlcode
Beitrag von: Puschel74 am 15 Juni 2014, 22:27:02
Hallo,

um Backslash und zusätzliche Semikolon braucht man sich nicht zu kümmern wenn man die Finger von der fhem.cfg lässt.
Aber hier red ich wohl an eine Wand.

Wenn im FHEM-Logfile der Code steht dann steht meist noch was davor (oder danach).
Der Hinweis
ZitatIm Log steht nur der code mehr nicht.
bringt dich (und uns) hier nicht weiter.
Der Code selbst erscheint bei mir NIE im Logfile - das hat FHEM so an sich.
Wenn der Code richtig ist dann erscheinen im Logfile nur die "Schalt"Befehle oder, wenn es Fehler im Code gibt dann die Fehlermeldungen.

ZitatHab jetzt aber verstanden wo die ; \ usw hinkommen hat mir bei anderen Sachen sehr geholfen.
DAS wage ich zu bezweifeln.

Wie schon geschrieben und im Forum schon x-mal gepostet.
Finger weg von der fhem.cfg und es gibt schonmal 2/3 weniger Fehler die sich zwischen Bildschirm und Tastatur einordnen lassen.

Da du aber die angepinnten Beiträge IMMER noch nicht gelesen hast (oder den Inhalt geflissentlich ignorierst) bin ich nun raus.

Grüße

Edith: Wie geschrieben - ich habe kein Problem damit Anfänger unter die Arme zu greifen und zu helfen.
Ich hab nur keine Lust alles und jeden aufs neue abzufragen oder irgendwas zu vermuten.
Titel: Antw:Anfänger braucht Hilfe bei Perlcode
Beitrag von: cobra112 am 16 Juni 2014, 00:10:26
Hi

Ich habe es gelesen und bin dabei es umzusetzen.

Das steht im Log:

2014.06.16 00:07:25 5: Triggering Telefontestneu
2014.06.16 00:07:25 4: Telefontestneu exec {
   my $intNr == (ReadingsVal("callmonitor","external_number","99"));;
  if (($intNr eq "0xxxxxxxxx")) {
    fhem("set DectTV off ;; set pushmsg msg 'Test' 'Hallo' ")
  }
}


Muss jetzt erstmal Arbeiten. Werde Morgen Weitermachen, Genug Std. damit verbracht.

MFG
cobra
Titel: Antw:Anfänger braucht Hilfe bei Perlcode
Beitrag von: dlinus am 16 Juni 2014, 08:28:47
Zitat von: Puschel74 am 15 Juni 2014, 22:27:02
Hallo,

Da du aber die angepinnten Beiträge IMMER noch nicht gelesen hast (oder den Inhalt geflissentlich ignorierst) bin ich nun raus.

Grüße

Edith: Wie geschrieben - ich habe kein Problem damit Anfänger unter die Arme zu greifen und zu helfen.
Ich hab nur keine Lust alles und jeden aufs neue abzufragen oder irgendwas zu vermuten.
Titel: Antw:Anfänger braucht Hilfe bei Perlcode
Beitrag von: dlinus am 16 Juni 2014, 08:32:40
Zitat von: Puschel74 am 15 Juni 2014, 22:27:02
Da du aber die angepinnten Beiträge IMMER noch nicht gelesen hast (oder den Inhalt geflissentlich ignorierst) bin ich nun raus.

Grüße

Edith: Wie geschrieben - ich habe kein Problem damit Anfänger unter die Arme zu greifen und zu helfen.
Ich hab nur keine Lust alles und jeden aufs neue abzufragen oder irgendwas zu vermuten.

@Puschel74
Sag mal, was hast du eigentlich für ein Problem !?
Egal, wer hier was einträgt, wird von dir "zurechtgewiesen"
Wenn dich das nervt, wenn "Anfänger" hier dieses Forum benutzen, sich in diese komplexe Thematik einarbeiten und hier Fragen stellen, dann ignorier das doch bitte halt und lasse deine ewigen Kommentare und verweise auf irgend welche Link, Danke
Titel: Antw:Anfänger braucht Hilfe bei Perlcode
Beitrag von: marvin78 am 16 Juni 2014, 08:45:55
Es nervt ihn, verständlicherweise, wenn Anfänger überhaupt keine Eigeninitiaitve zeigen, offensichtlich die Antworten nicht lesen und die angepinnten Tipps und Hilfen nicht lesen und anwenden. Puschel74 ist ein vergleichsweise hilfreicher und, gerade zu Anfängern, gutmütiger Moderator. Aber man kann nicht helfen, wenn es so läuft, wie in diesem Thread. Ich an seiner Stelle, hätte hier schon lange aufgehört.
Titel: Antw:Anfänger braucht Hilfe bei Perlcode
Beitrag von: cobra112 am 17 Juni 2014, 02:50:05
Hi

Es läuft. Nach langen Suchen geht es.

Wer auch das selbe vorhat hier der code:

Danke für die Hilfe.

.ring { \
  my $extNr = (ReadingsVal("callmonitor","external_number","99"));;\
  my $intNr = (ReadingsVal("callmonitor","internal_number","99"));;\
  if (($extNr eq "xxxxxxx") && ($intNr eq "xxxxxxxx")) { \
    fhem("set pushmsg msg 'Hof' 'Tor geht auf' ")\
  }\
}


MFG
Cobra