UPGRADE IP 9 verfügbar!
Timberwolf VISU jetzt mit NEUEM Layout Editor
Freie Anordnung, Reihenfolge und Größe der Widgets - viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/06SeuHRJ

NEU! Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Damit kann nun jeder das Upgrade vornehmen und VISU & IFTTT testen. Alle Info hier: viewtopic.php?f=8&t=5074

[Frage] Diskussion/Fragen zum Wiregate Plugin Container

Alles rund um die Timberwolf Server APP "WireGate Plugin" mit der Laufzeitumgebung für WireGate Server Plugins
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln
Benutzeravatar

bodo
Reactions:
Beiträge: 283
Registriert: So Aug 12, 2018 7:01 am
Hat sich bedankt: 271 Mal
Danksagung erhalten: 106 Mal

#51

Beitrag von bodo »

tger977 hat geschrieben: Do Aug 29, 2019 9:42 pm Da hat Elabnet denke ich schon die richtige Entscheidung getroffen.
Hoi

Ja, das denke ich auch. :clap:
Grüsse Bodo

TWS 2400 ID:64, VPN offen, Reboot möglich * Wiregate * zahlreiche 1-Wire Sensoren * einige BlitzART
Benutzeravatar

jensgulow
Reactions:
Beiträge: 321
Registriert: Fr Apr 19, 2019 4:37 pm
Hat sich bedankt: 66 Mal
Danksagung erhalten: 134 Mal

#52

Beitrag von jensgulow »

Ich muss diese Diskussion noch einmal aufgreifen:
viewtopic.php?f=25&t=1244&hilit=wiregat ... =40#p13982

Nachdem ich ein paar plugins in den Container kopiert habe konnte ich eine zeitlang auch über die Console mit

Code: Alles auswählen

watch -n 1 ./app/plugin_status.pl 
den Status der plugins visualisieren. Es kamen 1-2 von den o.g. Fehlermeldungen. Nach Installation des plugins Statesave.pl

Code: Alles auswählen

#############################################################################
# Plugin StateSave
# V0.5 2011-09-18
# Copyright: Christian Mayer (mail at ChristianMayer.de)
# License: GPL (v3)
#
# Plugin to remember states on the bus if over power failures
#
# TODO: DPT is currently required - but it should be optional
#############################################################################

# COMPILE_PLUGIN

#############################################################################
# Configuration:

# The %states hash defines the global names to use in the plugins in the form of
#   $plugin_info{'Global_...'}
# as well as the KNX GA

# Syntax:
# 'Global_Name' => [ 'KNX GA', 'Initial Value', 'DPT (optional)', 'cachetime (optional)' ],
my %states = (
  'Global_Sperre_HTH'             						=> [ 'x/y/z', 0, 1 , 86400],
  'Global_Sperre_Rollladen'				 			=> [ 'x/y/z', 0, 1 ], 
 .....
  'Global_Status_Trockner'     						=> [  'x/y/z', 0, 7],
);

my $reset_states = 0; # set to 1 to reset the states, run script and change to 0 again
my $show_debug   = 0; # switches debug information that will be shown in the log

#############################################################################
# Do NOT change anything below!
#############################################################################

#############################################################################
# Initialisation
for my $this_state ( keys %states ) 
{ 
  # Initialise global variable an the bus
  if( $reset_states or not exists $plugin_info{ $this_state } )
  {
    $plugin_info{ $this_state } = $states{ $this_state }[1];
    knx_write( $states{ $this_state }[0], $plugin_info{ $this_state }, $states{ $this_state }[2] );
  }
  
  # subscribe GA
  $plugin_subscribe{ $states{ $this_state }[0] }{ $plugname } = 1;
}

# No cycling, run only on request
$plugin_info{$plugname.'_cycle'} = 0;

my $ret_val = '';

#############################################################################
# Handle the bus traffic

# Early exit during a response messeage - it's usually from us...
if( $msg{'apci'} eq 'A_GroupValue_Response' )
{
  return;
}

# a linear search isn't smart but OK for only a few states:
for my $this_state ( keys %states ) 
{ 
  my $GA  = $states{ $this_state }[0];
  my $DPT = $states{ $this_state }[2];
  my $cache = $states{ $this_state }[3] || 0;
  
  if( $msg{'dst'} eq $GA )
  {
    $ret_val .= $GA . '[' . $DPT . ']:';
    
    if(   $msg{'apci'} eq 'A_GroupValue_Read' ) 
    {
      $ret_val .= 'read <- "' . $plugin_info{ $this_state } . '";';
      knx_write( $GA, $plugin_info{ $this_state }, $DPT, 1 ); # send response
    } 
    elsif($msg{'apci'} eq 'A_GroupValue_Write')
    {
      # read from eibd cache, so we'll the cast for free:
      my $v = knx_read( $GA, $cache, $DPT );
      $ret_val .= 'write: "' . $plugin_info{ $this_state } . '" -> "' . $v . '";';
      $plugin_info{ $this_state } = $v;
    }
  }
}

if( $show_debug ) { return $ret_val; }
return;
sehe ich nunmehr nur noch diese Fehlermeldungen und kann den Zustand der plugins nicht mehr sehen.
wiregateplugincontainer001.jpg
Offensichtlich führt das versuchte Beschreiben/Auslesen des Hashs plugin_info zu diesen Fehlermeldungen ..... kann man die Ursache beseitigen? Oder habe ich da ggf. selbst eine Möglichkeit?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Viele Grüße

Jens

_____________________________________________________________________
TWS 2600#394 , TWS 3500L#1051, VPN offen, Reboot erlaubt
Was wird genutzt? -> TWS, KNX, 1-wire, MODBUS, Http-REST-API, IFTTT, Enocean, Amazon Alexa
Benutzeravatar

jensgulow
Reactions:
Beiträge: 321
Registriert: Fr Apr 19, 2019 4:37 pm
Hat sich bedankt: 66 Mal
Danksagung erhalten: 134 Mal

#53

Beitrag von jensgulow »

Ich habe selber mal nachgeschaut:

Der Fehler wird in diesem Codeblock erzeugt:

Code: Alles auswählen

    my $max = 25;
    print(sprintf("%-*s %-6s %-19s %s\n", $max, 'name', 'cycle', 'last call', 'last result'));
    for my $key (sort keys %plugins) {
        my $cycle = $plugins{$key}{'cycle'};
        if (!$cycle) {
            $cycle = 0;
        }
        print(sprintf("%-*s %-6d %-19s %s\n", $max, $key, $cycle,
         strftime("%Y-%m-%d %H:%M:%S", localtime($plugins{$key}{'last'})),
            $plugins{$key}{'result'}));
    }
Die Informationen aus dem Hash $plugin_info haben aber weder die Attribute 'last' noch 'result'. Da existiert immer nur die gespeicherte Variable. Deswegen wirft das Programm dann Fehler. Leider habe ich hier noch keine Idee, wie man das abfängt.....
Viele Grüße

Jens

_____________________________________________________________________
TWS 2600#394 , TWS 3500L#1051, VPN offen, Reboot erlaubt
Was wird genutzt? -> TWS, KNX, 1-wire, MODBUS, Http-REST-API, IFTTT, Enocean, Amazon Alexa

Gabi
Elaborated Networks
Reactions:
Beiträge: 114
Registriert: Di Aug 21, 2018 1:15 pm
Hat sich bedankt: 6 Mal
Danksagung erhalten: 41 Mal

#54

Beitrag von Gabi »

Hallo @jensgulow

der Fehler tritt auf, wenn das Perl-Hash "plugin_info" nicht nur Schlüssel der Form:
plugin-name_variable
enthält.
Vielen Dank für die Fehlermeldung.

Ich habe daher ein Skript "./app/plugin_status_new.pl" in deinen container kopiert, das nicht versucht den Schlüssel des hashes zu zerlegen, sondern zu den vorhandenen plugins die Werte der Variablen 'cycle', ... bestimmt.
Entspricht die Ausgabe dieses Skripts deinen Erwartungen?

Das Skript geht verloren, wenn der container neu gebaut wird. Ich werde es aber in die nächste Version des containers aufnehmen.

Das Skript "./app/show_plugindb.pl" werde ich auch noch ändern und die Einträge, die zu keinem plugin "gehören" unter einer getrennten "Überschrift" auflisten.

Außerdem wird es dann noch das Skript "./app/entries_plugin_info.pl" geben, das ich auch in deinen container kopiert habe.
Dieses Skript gibt die nach Schlüsseln sortierten Einträge des Hashes aus, bei der nur die timestamps (.._last und .._lastsaved) in ein Datum/Uhrzeit Format konvertiert werden. Falls es dann noch Probleme mit der Zuordnung der Variablen zu den plugins gibt, listet dieses Skript die vorhandenen Informationen auf.

Momentan gibt es auch noch ähnliche Fehlermeldungen, wenn das plugin nicht mit ".pl" endet.
Diesen Fehler werde ich auch in der nächsten Version beheben.

Viele Grüße
Gabi
Benutzeravatar

jensgulow
Reactions:
Beiträge: 321
Registriert: Fr Apr 19, 2019 4:37 pm
Hat sich bedankt: 66 Mal
Danksagung erhalten: 134 Mal

#55

Beitrag von jensgulow »

Vielen Dank für die schnelle Reaktion. Ich werde das heute Abend mal ausprobieren.

PS: Habe es gerade ausprobiert. Läuft super und zeigt genau das an was ich sehen wollte. DANKE!

PS2: @Gabi : Wenn Du einen neuen Container baust, wäre es dann möglich das hier auch zu berücksichtigen?
wiregate-plugin-Container mit nginx, php und mysql
#1Beitrag von jensgulow » Di Okt 01, 2019 7:29 am
Der Titel verät bereits meinen Wunsch. Ich habe mir den Standard-Container installiert. Es ist schon mühsam die einzelnen weiteren Komponenten hier hinein zu bekommen. Daher die Frage nach einem "erweiterten" wiregate-plugins Container. Mit den o.g. zusätzlichen Komponenten würde er im Prinzip fast alles abdecken, was ich mit dem wiregate so veranstaltet habe.
Nur 'ne Frage. Es würde vieles vereinfachen ....
Zuletzt geändert von jensgulow am Fr Okt 04, 2019 8:34 pm, insgesamt 1-mal geändert.
Viele Grüße

Jens

_____________________________________________________________________
TWS 2600#394 , TWS 3500L#1051, VPN offen, Reboot erlaubt
Was wird genutzt? -> TWS, KNX, 1-wire, MODBUS, Http-REST-API, IFTTT, Enocean, Amazon Alexa
Benutzeravatar

jensgulow
Reactions:
Beiträge: 321
Registriert: Fr Apr 19, 2019 4:37 pm
Hat sich bedankt: 66 Mal
Danksagung erhalten: 134 Mal

#56

Beitrag von jensgulow »

PS3: So sieht jetzt die Ausgabe aus - super!

Code: Alles auswählen

root@2789b584310b:/# ./app/plugin_status_new.pl
max = 33
name                              cycle  last call           last result
StateSave.pl                      0      2019-10-04 20:35:31
Status_HTH.pl                     0      2019-10-04 19:47:34 1 Handtuch-Heizkoerper an: HTH OG
Status_Lampen_EG.pl               0      2019-10-04 20:27:36 3 Lampen an: Kueche Decke,Esstisch Decke,EG Treppe OG
Status_Lampen_KG.pl               0      2019-10-04 20:01:26 1 Lampe an: UG Treppe EG
Status_Lampen_OG.pl               0      2019-10-04 20:35:06 1 Lampe an: Johanna Decke
advent.pl                         43200  2019-10-04 08:58:05 0
apixuweather.pl                   600    2019-10-04 20:28:16
chumby_wecker_verarbeitung.pl     59     2019-10-04 20:35:13
emx_sonne.pl                      86399  2019-10-04 03:11:14 86399
hth_zeitschalter.pl               300    2019-10-04 20:31:54
saunaTemp.pl                      0      2019-10-04 20:33:49
steuerung_trockner_fb_dect_200.pl 60     2019-10-04 20:34:49
steuerung_wama_fb_dect_200.pl     60     2019-10-04 20:35:31 Waschmaschine waescht
windspeed.pl                      0      2019-10-04 20:35:22 2.65 m/s, 7.95 km/h, Beaufort: 2
Viele Grüße

Jens

_____________________________________________________________________
TWS 2600#394 , TWS 3500L#1051, VPN offen, Reboot erlaubt
Was wird genutzt? -> TWS, KNX, 1-wire, MODBUS, Http-REST-API, IFTTT, Enocean, Amazon Alexa

bluegaspode
Reactions:
Beiträge: 72
Registriert: Sa Nov 09, 2019 10:09 pm
Hat sich bedankt: 7 Mal
Danksagung erhalten: 31 Mal

#57

Beitrag von bluegaspode »

tger977 hat geschrieben: Do Aug 29, 2019 9:32 pm
Robosoc hat geschrieben: Di Aug 27, 2019 9:25 pm Die Fehler habe ich mir erstmal weggesprengt, indem ich die folgenden Zeilen in der .pl-Datei mit der Raute unwirksam gemacht habe:

# use LWP::UserAgent;
# use URI::Escape;

Das führt mit Sicherheit früher oder später zu Ausführungsproblemen meiner Logiken, aber zumindest bei dem Thema UserAgent habe ich eine Idee, wann auf dieses Subroutinen zugeriffen werden und deaktivere entsprechend die Logiken, die das Triggern.

Jemand eine Idee, wann URI::Escape benötigt wird?
Also bei mir waren diese Zeilen nur im Logikprozessor in der subroutine für das prowl/NMA Modul drin und auch nur dafür nötig. Da ich beides nicht nutze passiert da bei mir sonst gar nichts und sollte damit für alle anderen Logiken unkritisch sein!
Da der Logikprozessor vermutlich sehr intensiv genutzt wird/wurde? Lohnt es sich diese Anpassung in der Knowledge Base zu beschreiben?
Zumindest bin ich gerade auch drüber gestolpert.

Alternativ wäre es natürlich besser, wenn der Plugin-Container diese Abhängikeiten für das womöglich wichtigste Plugin mitbringt?
"TWS 350Q ID:417, VPN geschlossen, Reboot nicht erlaubt"

bluegaspode
Reactions:
Beiträge: 72
Registriert: Sa Nov 09, 2019 10:09 pm
Hat sich bedankt: 7 Mal
Danksagung erhalten: 31 Mal

#58

Beitrag von bluegaspode »

So - alle Plugins laufen durch Anpassungen inzwischen, bis auf das letzte störrische:
https://github.com/OpenAutomationProjec ... gateway.pl

Hier bekomme ich ein

Code: Alles auswählen

2019-11-16 20:47:03 Can't locate Net/SMTP/SSL.pm in @INC (you may need to install the Net::SMTP::SSL module) (@INC contains: /usr/share/bcusdk /app /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.24.1 /usr/local/share/perl/5.24.1 /usr/lib/arm-linux-gnueabihf/perl5/5.24 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.24 /usr/share/perl/5.24/usr/local/lib/site_perl /usr/lib/arm-linux-gnueabihf/perl-base
Habt ihr einen Tipp, wie ich das Modul nachinstalliert bekomme?
Internet sagt: /usr/bin/cpan -f Net::SMTP::SSL
das läuft in dem Container aber nicht fehlerfrei durch.
"TWS 350Q ID:417, VPN geschlossen, Reboot nicht erlaubt"

bluegaspode
Reactions:
Beiträge: 72
Registriert: Sa Nov 09, 2019 10:09 pm
Hat sich bedankt: 7 Mal
Danksagung erhalten: 31 Mal

#59

Beitrag von bluegaspode »

bluegaspode hat geschrieben: Sa Nov 16, 2019 8:53 pm So - alle Plugins laufen durch Anpassungen inzwischen, bis auf das letzte störrische:
https://github.com/OpenAutomationProjec ... gateway.pl
So gehts:

apt-get install libnet-smtp-ssl-perl
apt-get install ca-certificates

Neustart Container

(und dann natürlich entsprechend Knowledge Base noch in das Init-Script ergänzen: app.php/kb/viewarticle?a=102)
"TWS 350Q ID:417, VPN geschlossen, Reboot nicht erlaubt"
Antworten

Zurück zu „Timberwolf APP: WireGate Plugin Laufzeitumgebung“