[FHZ] 2 FHEM Server betreiben und verbinden

Begonnen von rudolfkoenig, 23 Juni 2008, 21:53:26

Vorheriges Thema - Nächstes Thema

rudolfkoenig

Originally posted by: <email address deleted>

Hallo,
ich habe 2 FHEM Server laufen:
1.) NSLU2 (192.168.99.55) zur Solaranlagen und Heizungssteuerung, mit
eigenem Modul ohne FHZ
2.) Hausserver (192.168.99.153) mit FHZ und PGM3 WebFrontend

Nun frage ich mich, wie ich am geschicktesten Daten (Sensoren,
Aktuatoren) austausche?

Momentan mache ich es folgendermaßen:
- Logfiles mit rsync von 1.) nach 2.) => Anzeige gemeinsam in PGM3
- Aktuatoren wollte ich mit fhem übertragen. Geht auch prinzipiell mit
telnet aber in fhem.cfg ist irgendetwas an folgendem Syntax falsch.
Was? ... ich komm nicht drauf als perl-Legastheniker:
define n4 notify ZirkPump:off  { fhem "192.168.99.55:7072 set ZirkPump
off";; }
- Sensorwerte benötige ich momentan nur in Form der Logfiles

Ein Problem konnte ich noch nicht knacken:

Die ZirkPump hängt an 1.) und wird da zeitgesteuert:
define a1 at *06:15:00 set ZirkPump on-till 08:30:00

Von 2.) kann ich Sie per Funkschalter manuell einschalten:
define n1 notify Bad_1:toggle set ZirkPump off
und per notify wird es an 1.) übertragen
define n4 notify ZirkPump:off  { fhem "192.168.99.55:7072 set ZirkPump
off";; } (wie erwähnt, theoretisch :-))

Nun fehlt mir die Rückmeldung des Status (der Zeitsteuerung) von 1.)
nach 2.).
bei einem
{ fhem "192.168.99.153:7072 set ZirkPump off";; }
auf 1.) befürchte ich eine Endlosschleife zwischen den beiden Servern
zu bekommen?!
Ein setstate ZirkPump ... setzt zwar den Status aber der wird von PGM3
dann nicht angezeigt....

Kann mir jemand helfen?
... und gibt es eine viel elegantere Möglichkeit 2 FHEM Server zu
"vernetzen"? z.B. mittels xmllist?

Danke

Peter
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHZ1000 users on Linux" group.
To post to this group, send email to FHZ1000-users-on-unix@googlegroups.com
To unsubscribe from this group, send email to FHZ1000-users-on-unix-unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/FHZ1000-users-on-unix?hl=en
-~----------~----~----~----~------~----~------~--~-

rudolfkoenig

                                                   

> define n4 notify ZirkPump:off  { fhem "192.168.99.55:7072 set ZirkPump off";; }

Die Interne Perl Funktion "fhem" hat nicht den gleichen Syntax, wie
fhem.pl im client mode :-)
Es heisst also:

define n4 notify ZirkPump:off  "fhem.pl 192.168.99.55:7072 set
ZirkPump off"

> auf 1.) befürchte ich eine Endlosschleife zwischen den beiden Servern
> zu bekommen?!

Das kann natuerlich sein....

> Ein setstate ZirkPump ... setzt zwar den Status aber der wird von PGM3 dann nicht angezeigt....

Wieso nicht? Martin! :-)

> ... und gibt es eine viel elegantere Möglichkeit 2 FHEM Server zu
> "vernetzen"? z.B. mittels xmllist?

Im Moment faellt mir nichts ein, andererseits weiss ich auch nicht
genau, was Du haben willst. Gibt es unter Linux nicht eine
Moeglichkeit, beliebige Geraete-Knoten auf einem anderen Rechner zur
Verfuegung zu stellen? Dann koenntest Du alles in einem fhem.pl
zusammen haben.

Gruss,
  Rudi


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHZ1000 users on Linux" group.
To post to this group, send email to FHZ1000-users-on-unix@googlegroups.com
To unsubscribe from this group, send email to FHZ1000-users-on-unix-unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/FHZ1000-users-on-unix?hl=en
-~----------~----~----~----~------~----~------~--~-

Guest

Originally posted by: <email address deleted>

> > Ein setstate ZirkPump ... setzt zwar den Status aber der wird von PGM3 dann nicht angezeigt....
>
> Wieso nicht? Martin! :-)

Ok :-) Zugegeben, so ganz habe ich die Situation noch nicht komplett
verstanden.
pgm3 sollte alle Infos des xmllist-Output ausgeben.

Also Peter, gibt die FHEM-Ausgabe ("./fhem.pl 7072 xmllist") die
gesuchten Infos aus (?), wenn ja dann sollte das die pgm3 auch
darstellen (ansonsten ist das wirklich ein Bug).

Martin :-)

P.S.: die nachsten Tage bin ich beruflich (ohne "richtiges Linux-
Internet" :-( ) unterwegs.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHZ1000 users on Linux" group.
To post to this group, send email to FHZ1000-users-on-unix@googlegroups.com
To unsubscribe from this group, send email to FHZ1000-users-on-unix-unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/FHZ1000-users-on-unix?hl=en
-~----------~----~----~----~------~----~------~--~-

Guest

Originally posted by: <email address deleted>

@Rudi:

> Die Interne Perl Funktion "fhem" hat nicht den gleichen Syntax, wie
> fhem.pl im client mode :-)
> Es heisst also:
>
> define n4 notify ZirkPump:off  "fhem.pl 192.168.99.55:7072 set
> ZirkPump off"
Ich verstehe immer nur perl und intern :-) Wo sind denn die {} -
Klammern geblieben?
Für diese Zeile habe ich JAHRE gebraucht, aber sie funktioniert:
define n9 notify TC6_1 { if("%" eq "toggle") { fhem "set Markise
off";; } else { fhem "set Markise on";; } }

Und auf http://www.koeniglich.de/fhem/commandref.html steht:
"There are three types of commands: "fhem" commands (described in this
document), shell commands (they must be enclosed in double quotes ")
and perl expressions (enclosed in curly brackets {})." und
"To use fhem commands from the perl expression, use the function
"fhem", which takes a string argument, this string will be evaluated
as an fhem command chain.
Example:

      define n1 notify piri:on { fhem "set light on" }
"
Das ist doch (fast) mein Beispiel. Und nun will ich nur ein fhem auf
einem entfernten Rechner ansprechen und host:port einfügen. Warum
fallen dann die Klammern weg?
Verzweifel :-(

> Im Moment faellt mir nichts ein, andererseits weiss ich auch nicht
> genau, was Du haben willst. Gibt es unter Linux nicht eine
> Moeglichkeit, beliebige Geraete-Knoten auf einem anderen Rechner zur
> Verfuegung zu stellen? Dann koenntest Du alles in einem fhem.pl
> zusammen haben.
>

Ich will 2 unabhängige fhem, da das mit den Geräteknoten (mittels
socat) unzuverlässig war. Brach die Netzwerkverbindung zusammen, dann
half nur fhem neu starten um alle Geräte wieder zu haben. Und das
nicht automatisch. Jetzt habe ich 2 unabhängige Steuerungen, die
allerdings ein paar wenige Daten austauschen müssen, aber jede läuft
ohne die andere.

Gruß

Peter
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHZ1000 users on Linux" group.
To post to this group, send email to FHZ1000-users-on-unix@googlegroups.com
To unsubscribe from this group, send email to FHZ1000-users-on-unix-unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/FHZ1000-users-on-unix?hl=en
-~----------~----~----~----~------~----~------~--~-

Oskar

Originally posted by: <email address deleted>

@ Martin und Rudi:

> Also Peter, gibt die FHEM-Ausgabe ("./fhem.pl 7072 xmllist") die
> gesuchten Infos aus (?), wenn ja dann sollte das die pgm3 auch
> darstellen (ansonsten ist das wirklich ein Bug).

Also ich wage nicht zu sagen wer "Schuld" ist.

Folgender Versuch:
- ZirkPump wird in PGM3 als "off" gezeigt.
- ./fhem.pl 7072 xmllist >xmlvor
- Auszug aus xmlvor:
       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                        measured="2008-06-22 18:43:35"/>
               


- ./fhem.pl 7072 "setstate ZirkPump on" (ohne {}-Klammern ! :-))
- ./fhem.pl 7072 xmllist >xmlnach
- Auszug:
           
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                        measured="2008-06-22 18:43:35"/>
               


Was auffällt ist, daß die Daten nicht "konsistent" sind:
state="on", aber
STATE key="state" value "off" measured="2008-06-22 18:43:35 keine
Veränderung und das wird nach wie vor von PGM3 angezeigt.
Da liegt wohl auch der Unterschied, daß ein "set ZirkPump on" ein
notify triggered, ein "setstate ZirkPump on" nicht. Deshalb wollte ich
ja setstate verwenden...
Aber trotzdem komisch der Unterschied in den beiden keys, oder?

Gruß

Peter
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHZ1000 users on Linux" group.
To post to this group, send email to FHZ1000-users-on-unix@googlegroups.com
To unsubscribe from this group, send email to FHZ1000-users-on-unix-unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/FHZ1000-users-on-unix?hl=en
-~----------~----~----~----~------~----~------~--~-
--
fhem geht auch auf mac os x

rudolfkoenig

                                                   

> Warum fallen dann die Klammern weg?
> Verzweifel :-(

Wie Du das schon richtig gelesen hast: mit {} wird das Argument als
perl code ausgefuehrt. In fhem.pl gibt es  eine perl Funktion fhem,
der alles was als Argument bekommt, als fhem Kommando interpretiert.
Rechnername:Port versteht er aber nicht.
Wenn man "" verwendet, dann wird alles als Shell-Programm ausgefuehrt.
fhem.pl ruft dann  das fhem Programm auf, der, wenn es mit zwei
Parameter aufgerufen wird, dann sich als Client benimmt, und ein
Befehl zu dem spezifizierten Server sendet. Wegen der 2 Parameter muss
ich den obigen Beispiel etwas korrigieren:

define n4 notify ZirkPump:off  "fhem.pl 192.168.99.55:7072 "set
ZirkPump off""

> Was auffällt ist, daß die Daten nicht "konsistent" sind: state="on", aber STATE key="state" value "off"

Daraus kann man ablesen, dass der globale Status nicht vom FS20 Geraet
empfangen wurde, sondern via setstate gesetzt wurde. Und pgm3 zeigt
den (via FHZ) empfangenen, und nicht den (gesetzten) globalen Status
an.

Loesungen:
- Du sendest folgendes: "setstate ZirkPump 2008-06-15 16:06:03 state
off"
  Damit wird der "empfangene" Wert verstellt.
- pgm3 wird umgestellt, so dass jeweils der globale Status eines
Geraetes angezeigt wird statt den "empfangenen".

Gruss,
  Rudi
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHZ1000 users on Linux" group.
To post to this group, send email to FHZ1000-users-on-unix@googlegroups.com
To unsubscribe from this group, send email to FHZ1000-users-on-unix-unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/FHZ1000-users-on-unix?hl=en
-~----------~----~----~----~------~----~------~--~-