Neues Modul PID20 - Der PID-Regler

Begonnen von John, 02 Dezember 2013, 22:03:40

Vorheriges Thema - Nächstes Thema

Steve

Hier mal ein kleiner Auszug:

define PID.FUBO PID20 Keller:GPIO4_Keller:maxValveSetting
#-----------------------------------------------------------------
define RPI GPIO4 BUSMASTER

#---------------------------------------------------------------------
define Keller GPIO4 10-000802906860
attr Keller model DS18B20
attr Keller room GPIO4
define GPIO4_Keller at +*00:01 set GPIO4_Keller messen;; sleep 1;; get GPIO4_Keller temp
define Log_Keller FileLog /opt/fhem/log/Temperatur-%Y.log Keller:(temp).*

--------------------------------------------------------------------------------------------------------------------------------------
Im Logfile kommt aber noch eine seltsame Meldung.

Ich habe erst gestern  den 1Wire über RPI in Betrieb genommen. Kann sein das ich dort noch einen Fehler habe :-\

John

Hi Steve,
schau dir bitte noch mal das Wiki an
define PID.FUBO PID20 Keller:GPIO4_Keller:maxValveSetting

Da stimmt fast gar nix. Wo ist der Aktor  ?

maxValveSetting ist wohl nicht das "regexp" , das man nur ganz selten braucht.

Welchen Aktor hast zu geplant (auch hier ein list <actor>)

Ausserdem brauche ist das "list Keller" !!

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

betateilchen

Ich habe jetzt in der Küche einen der neuen Homematic-Wandthermostaten mit meinem alten FHT8v per PID20 verknüpft. Läuft gut :)



Internals:
   CFGFN     
   DEF        ku_TC_Weather:temperature ku_Ventil:valve
   NAME       ku_PID20
   NR         360
   NTFY_ORDER 50-ku_PID20
   STATE      T: 21.7 °C D: 16 °C V: 0 %
   TYPE       PID20
   CHANGETIME:
   Helper:
     Dblog:
       Desired:
         Fhemdblog:
           TIME       1393275820.5338
           VALUE      16
   Readings:
     2014-02-24 22:03:00   actuation       0
     2014-02-24 22:04:00   actuationCalc   -142.9
     2014-02-24 22:04:00   delta           -5.7
     2014-02-24 22:03:40   desired         16
     2014-02-24 22:03:00   measured        21.7
     2014-02-24 22:04:00   p_d             0
     2014-02-24 22:04:00   p_i             -0.399999999999999
     2014-02-24 22:04:00   p_p             -142.5
     2014-02-24 22:04:00   state           processing

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Steve

Hi John,

hab bitte etwas Geduld mit mir, bin leider noch nicht ganz sattelfest was FHEM betrifft. ;)

Als Aktoren mochte ich zwei Relais über NetIO ansteuern. Damit kann ich den Mischer meines HK von der
FBH regeln.
Das einzurichten  wäre der nächste Schritt. Eventuell werde ich andere Hardware verwenden.
Ich glaube ein Dummy (Stellventil) wäre zum probieren erst einmal ideal.


Internals:
   DEF        10-000802906860
   NAME       Keller
   NR         77
   STATE      T: 25.25
   TYPE       GPIO4
   Readings:
     2014-02-24 21:34:21   failures        0
     2014-02-24 22:04:52   state           T: 25.25
     2014-02-24 22:04:52   temperature     25.25
   Fhem:
     interfaces temperature
Attributes:
   model      DS18B20
   room       GPIO4

John

@Steve

Hallo Steve,
folgendes sollte funktionieren

define PID.FUBO PID20 Keller:temperature MyDummy

Vom Objekt Keller wird das Reading "temperature" als Istwert gelesen.

Die Ausgabe des Stellwertes erfolgt an MyDummy via
set Mydummy <value>

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

Steve

@John,

ich glaube das Problem gefunden zu haben. Im Log steht eine Fehlermeldung im Bezug auf den GPIO4.

    2014.02.25 08:46:25 2: After sleep: No get implemented for GPIO4_Keller
    2014.02.25 08:47:24 3: GPIO4_Keller: No set implemented for GPIO4_Keller

Werde erst einmal sehen wie ich das hin bekomme.

Dein Vorschlag möchte  auch nicht funktionieren.

Steve

Steve

Hey,

gibt es noch einen Trick für die Ausgabe des Stellwertes?

Mit dem Vorschlag von John geht es nicht.

Die Temperaturabfrage habe ich jetzt zum laufen gebracht.

Steve

John

@Steve
du brauchst keinen Trick, sondern musst es nur richtig machen.

Geh mit verbose auf 3 und suche in der FHEM-log nach Einträgen dieser Art:

Zitat2014.02.25 21:16:07 3: [PID.Test] PID20_Calc.685 <set PID.Actor  23> with ret:

Beim mir ist PID.Actor auch ein dummy.
Es funktioniert, er wird gesetzt.

define PID.Test PID20 PID.Sensor:temperature PID.Actor
Sowohl PID.Sensor, wie auch PID.Actor sind Dummys.
Beim PID.Sensor ist noch das userReading temperature hinzufgefügt.

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

cwagner

@Steve:
auch bei mir läuft es wie von John beschrieben - die PID20-Werte werten in einen Dummy geschrieben.

Eine Veränderung dieses Dummys wird bei mir nun von einem Notify ausgewertet. Und dieses Notify steuert zwei Releais, die nun je nach Veränderung zum Vorwert ein Mischerventil um den entsprechenden Betrag auf- oder zufahren.
Du müsstest also mal sagen, was Du mit Deinen beiden Relais schließlich steuern willst.

Christian
PI 2B+/3B+ Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB

Steve


Ich bekomme es nicht auf die Reihe :'(

Im Log steht:

                     2014.02.26 14:05:53 1: [PID.Test] PID20_Define.135 PID.Test: Unknown sensor device PID.Sensor specified
                     2014.02.26 14:05:53 1: define: PID.Test: Unknown sensor device PID.Sensor specified

In der CFG habe ich folgendes eingetragen:

                     define PID.Test PID20 PID.Sensor:temperature PID.Actor
                     attr PID.Test verbose 3

                     define PID.Sensor dummy
                     attr PID.Sensor userReadings temperature
                     define PID.Actor dummy

Der PID wird bei mir gar nicht erst erstellt, so das ich auch verbose 3 nicht einstellen kann.

@ Christian

Kannst Du mir eventuell deine Konfiguration zukommen lassen, da ich auch mit zwei Relais arbeiten möchte.
Die Harware dafür habe ich schon konfiguriert.

Steve

betateilchen

Zitat von: Steve am 26 Februar 2014, 14:12:44
In der CFG habe ich folgendes eingetragen:

                     define PID.Test PID20 PID.Sensor:temperature PID.Actor
                     attr PID.Test verbose 3

                     define PID.Sensor dummy
                     attr PID.Sensor userReadings temperature
                     define PID.Actor dummy

Wenn das wirklich SO in der fhem.cfg steht, kann das auch nicht funktionieren.
Dir ist offenbar nicht klar, dass Du versuchst, den PID zu definieren, BEVOR Du den Sensor und den Actor generiert hast?

Dreh doch einfach mal die Reihenfolge um:


define PID.Sensor dummy
attr PID.Sensor userReadings temperature

define PID.Actor dummy

define PID.Test PID20 PID.Sensor:temperature PID.Actor
attr PID.Test verbose 3



Und verbose 3 brauchst Du normalerweise gar nicht zusetzen, das sollte in fhem Standard sein.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Steve

Danke es funktioniert.

Ich wußte nicht das die Reihenfolge in der CFG wichtig ist ::)


betateilchen

Die Konfiguration wird Schritt für Schritt in genau der Reihenfolge abgearbeitet, wir der Kram da drinsteht.

Deshalb sollte man jedem die Hände abhacken, der manuell und hirnfrei in der fhem.cfg rumpfuscht, ohne zu wissen was er/sie/es da eigentlich tut.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Ich habe zwei Bitten:


  • Könnte man bitte die Loglevel vereinheitlichen, damit man einigermaßen vernünftig mit verbose arbeiten kann.
  • Ausserdem wäre es schön, wenn sich die Logmeldungen am allgemeinen fhem Standard orientieren würden.



2014.02.26 19:07:44 2: [ku_PID20] PID20_Calc.701 readings updated
2014.02.26 19:07:46 3: [ku_PID20] PID20_Set.335 set ku_PID20 desired 16
2014.02.26 19:09:48 3: [ku_PID20] PID20_Set.335 set ku_PID20 desired 16
2014.02.26 19:12:39 3: [ku_PID20] PID20_Set.335 set ku_PID20 desired 16
2014.02.26 19:15:16 3: [ku_PID20] PID20_Set.335 set ku_PID20 desired 16
2014.02.26 19:15:45 2: [ku_PID20] PID20_Calc.701 readings updated

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

John

Hallo betateilchen,

ZitatKönnte man bitte die Loglevel vereinheitlichen, damit man einigermaßen vernünftig mit verbose arbeiten kann.
Werde ich mir ansehen.

ZitatAusserdem wäre es schön, wenn sich die Logmeldungen am allgemeinen fhem Standard orientieren würden
Ich finde es ungemein erleichternd bei der Analyse von Problemen, wenn

  • man die Instanz erkennen kann
  • man die auslösende Position im Code sofort ansteuern kann
Darauf will ich zumindest während der Evaluation nicht verzichten.

Ggf spendier ich noch ein Attribut um das Log-Verhalten zu verändern.

John

CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP