neue PHP-Module als Ersatz meiner Delphi-Module

Hallo Tommi,

danke für dein Statement aus Entwicklersicht.
Alles verständlich, die Schwierigkeit bezüglich der FW für den nanoCUL liegt für mich darin, dass alles oder fast alles mit Bezug auf FHEM geschrieben wird und wer das nicht kennt, weiß nie genau wo er eigentlich gerade steht.
Also deine für die Entwicklung genutzte culfw müsste doch alles können, was dein Modul so macht. Ich glaube für den Einstieg sollte es dann auch reichen.?

Zu meinen anderen Problemen, ich habe mal die Lage des nanoCUL mit der λ/2 Antenne geändert und nun funktioniert es viel besser, inclusive der Schalter und FB. Sogar das schalten per Webfront von V3.4 FHZ1300 wird nun richtig dargestellt.
Nochmals danke für deine Leistung.

Eine Frage hätte ich noch, wo finde ich eine Anleitung um die FHZ1300 mit den heutigen Methoden in das LAN einzubinden? Ich glaube hier bin ich etwas OT :wink:

LG Tom

Da fällt mir nur ein USB Device Server ein. Z. B. von Silex (teuer aber zuverlässig):
silex technology - Produkte - USB Device Server - Ãœbersicht

Gibt es bestimmt auch von anderen Herstellern. Ein Stück Software muss dann noch auf deinem Server installiert werden, um auf das USB Gerät zugreifen zu können.

Gesendet von iPhone mit Tapatalk Pro

Danke für die Info,

leider schreibt Silex aber, dass es keine Devices Driver für Linux/Raspi gibt - ratlos :frowning:

Tom

Ich habe nicht alle Möglichkeiten der CULFW im Modul umgesetzt. Aber alles was mein Modul kann, sollte theoretisch mit mindestens der genannten CULFW-Version funktionieren.

Du kannst auch den Software USBServer „Virtualhere“ verwenden. Damit habe ich auch meine WS300 angebunden.

Tommi

Hi tommi,

bin gerade aus dem Urlaub vom IP-Symcon zurück. :slight_smile:

Habe mir das „Virtualhere“ angeschaut und ist ja eine wirklich tolle Lsg. die aber leider nicht passt.

Ich kann die FHZ1300 z.Z. auf eine Fritzbox USB legen, aber wie bekomme ich dort den Server installiert?
Am Raspi installieren geht nicht, da er nicht in der Nähe der FS20 Geräte ist.

Ich würde es gern mit der USR-TCP232-T2 lösen geht das überhaupt und wenn ja, aber wie??

Gruß
tom2005

Auf der Fritzbox geht Virtualhere nicht. Möglicherweise hilft hier der Fritz Fernanschluss. Ich bin mir aber nicht sicher, ob der auch serielle USB-Geräte kann. Zudem gibt es den Client auch nur für Windows.

Alternativ ist wäre eigener Rasbpi+Virtualhere neben der Fritzbox in Summe oft günstiger als ein „echter“ Device Server. Gebraucht bekommt man einen älteren Rasbpi 1b fast geschenkt. Es werden so wenig Ressourcen gebraucht, das man zur Erhöhung der Stabilität /tmp und /vatr/log auch noch auf tmpfs (RAM) umleiten kein.

Tommi

Danke,
das werde ich mal probieren zumal es ja die FHZ1300 auch nicht mehr zu kaufen gibt und sie so langsam zu Goldstaub wird :wink:

Lg tom2005

Hallo tommi,

nachdem nun Weihnachten näher kommt wollte ich eine FS20 Steckdose mit einem Schwibbogen per script schalten.

Die Zeilen lauten:
" FS20_SwitchMode($IPS_TARGET, true); //Gerät einschalten
bzw.:
FS20_SwitchDuration($IPS_TARGET, true, 500);"
und die Antwort ist:
" Warning: Instance does not implement this function in /var/lib/symcon/scripts/48074.ips.php on line 26
Warning: Instance does not implement this function in /var/lib/symcon/scripts/48074.ips.php on line 27"

Mache ich einen Fehler und kann ich das umgehen oder geht das mit meinem CUL nicht.
Ich hatte verstanden das dimming und switching geht, aber wie geht es mit einem script?

Sorry und danke schon mal für die Antwort

tom2005

der Prefix ist SWD_, nicht FS20. Letzteres gibt es zwar auch, ist aber von Symcon selbst.

Tommi

Nach 3 Stunden suchen gebe ich auf :confused:

„SWD_SwitchMode($IPS_TARGET, true); //Gerät einschalten“

ergibt nur :

„Fatal error: Uncaught Error: Call to undefined function SWD_SwitchMode() in /var/lib/symcon/scripts/48074.ips.php:27
Stack trace:
#0 {main}
thrown in /var/lib/symcon/scripts/48074.ips.php on line 27“

Wo ist mein Problem?

Danke für die Mühen

Wo ist mein Problem?

Schwer zu sagen, gehen wir doch mal systematisch ran.

Meine Module müssen geladen sein. Wenn man im Script-Editor nach „SWD_“ eingibt (in der Classic dann CTRL-LEER drückt), sollten alle Befehle mit SWD_ auftauchen. Wenn nicht, IPS neu starten und im IPS Log suchen, warum das Modul nicht geladen wurde.
Es muss einen Splitter für den CUL geben und eine verbundene SwichDevice-Instance(deswegen SWD) für den Aktor. Im Konfigurationsdialog gibt es im Testcenter einen Button, der den Aktor schaltet. Das sollte funktionieren.

Tommi

Hi tommi,

das war der entscheidende Hinweis - „CTRL-LEER drücken“. Danke

Da alles andere korrekt eingerichtet war funktioniert Schalten und Duration (ca. 8 sec) nun wie es soll.

Ein Problem habe ich dennoch siehe Grafik unten, ich erhalte 2 Warnungen:

"Warning: Cannot auto-convert value for parameter VariableValue in /var/lib/symcon/modules/ipsymcon-phpmodule-by-Tommi/Switch/module.php on line 514

Warning: A non-numeric value encountered in /var/lib/symcon/modules/ipsymcon-phpmodule-by-Tommi/Switch/module.php on line 516"

Aus der module.php kann ich leider nicht erkennen wie ich die „duration: Integer“ ich habe 8 sec eingesetzt, anders schreiben sollte. Alle Versuche waren erfolglos.

Auszug aus README:

Switch Device

Generic Device module to present weather data

Prefix: SWD_
Public Functions:

forward data to splitter only, real actor control will need a Splitter with matching capabilities like AVMAHA or CUL

  • SWD_SetSwitchMode($id,$state): set the switch to the desired state
  • SWD_SetIntensity($id,$percent): Dim to the given Level

[SIZE=3]* SWD_SetDuration($id,$seconds,$action=null): (FS20 via CUL only) Switch to the given or …… expires

  • SWD_DimUp($id): Dim one Level(Step) Up
  • SWD_DimDown($id): Dim one Level(Step) down

[/SIZE]

Übrigens, wenn der SW aus ist und ich im Script „$action“ auf „null“ oder „0“ oder „Off“ setze passiert nichts, setze ich den Datenpunkt auf „On“ erfolgt die Schaltung auf „On“ für 8 sec.

Gibt es noch irgendwo eine andere Liste der Befehle die ich nicht gefunden habe?

Nochmals danke für das tolle Produkt.

Beim setduration war noch ein Fehler drin, den habe ich jetzt (hoffentlich) beseitigt

Die Liste der verfügbaren Befehle unterscheidet sich je nach installierten Modulen und kann man auslesen mit IPS_GetFunctionList

Tommi

@tommi,

toll es klappt nun:)

Kannst du die Readme bei Gelegenheit auch noch aktualisieren?

Schöne Tage noch

was ist an der README falsch?

hi tommi,

sorry für die Verzögerung.

Das Problem in der README auf meinem PI auch nach der Aktualisierung ist:

Auszug aus README:

Switch Device

Generic Device module to present weather data

Prefix: SWD_
Public Functions:

forward data to splitter only, real actor control will need a Splitter with matching capabilities like AVMAHA or CUL

  • SWD_SetSwitchMode($id,$state): set the switch to the desired state

  • SWD_SetIntensity($id,$percent): Dim to the given Level

  • SWD_SetDuration($id,$seconds,$action=null): (FS20 via CUL only) Switch to the given or …… expires


Sollte da nicht „On“ oder „Off“ erscheinen?

Bei mir funktioniert es so:

  • wenn Switch „AUS“ und ‚SWD_SetDuration($IPS_TARGET, 8, „on“);‘
    dann:
    SW „On“ für 8 sec.

  • wenn Switch „AN“ und ‚SWD_SetDuration($IPS_TARGET, 8, „off“);‘
    dann:
    SW „Off“ sofort ohne Verzögerung.

Bin ich falsch, sollte ich noch etwas prüfen?

Nochmals danke

eigentlich sollte der Text hinter Deinen Punkten genau das beschreiben:

SWD_SetDuration($id,$seconds,$action=null): (FS20 via CUL only) Switch to the given or opposite current state and reverse after time expires

Er schaut also wenn $action nicht gesetzt ist nach, ob gerade die Statusvariable „On“ oder „Off“ ist und setzt dann den Parameter $action entgegengesetzt. So der Plan.

Tommi

Was heißt $Action nicht gesetzt?

z.Z.:
Wenn also der Switch „Aus“ ist und „SWD_SetDuration($IPS_TARGET, 8, $action=null )“ eingesetzt wird passiert nichts.
Ebenso wenn für $action=null: nur „null“ oder nur „Off“ eingesetzt ist.

Der Schaltvorgang auf „An“ erfolgt nur bei:

SWD_SetDuration($IPS_TARGET, 8, „on“)

und mit Verzögerung von 8 sec dann wieder „Aus“.

Wenn aber der Switch „An“ ist und „SWD_SetDuration($IPS_TARGET, 8, „Off“ )“ eingesetzt wird dann schaltet der Schalter sofort ohne Verzögerung aus, genau wie bei "SWD_SetSwitchMode($IPS_TARGET, „Off“)

tom2005

Das ist so nicht gedacht. Was sagt die Debugausgabe des Devices dazu, wenn das ausgeführt wird, welche Befehle wurden abgeschickt?
gerne auch per PM

Tommi

Hi tommi, hier mal die 3 Bilder

Bild 1: SWD_SetDuration($IPS_TARGET, 8, „on“);
nach 8 sec. Schalter auf „AUS“ aber keine Notifikation

Bild 2: SWD_SetSwitchMode($IPS_TARGET, true); //Gerät einschalten
und dann:
SWD_SetDuration($IPS_TARGET, 8, „Off“);
Schalter sofort auf „AUS“

Bild 3: SWD_SetDuration($IPS_TARGET, 8, „null“);
SWD_SetDuration($IPS_TARGET, 8, „off“);
SWD_SetDuration($IPS_TARGET, 8, „0“);
SWD_SetDuration($IPS_TARGET, 8, „off“);
bei keinem Befehl erfolgt eine Schaltung