Zehnder ComfoAir Q350 TR

Begonnen von Syon, 07 Dezember 2016, 18:24:22

Vorheriges Thema - Nächstes Thema

Fistandantilus

Kurzes Update, welches auch für anderer interessant sein könnte. Bei mir enthielt die  /pycomfoconnect/const.py nicht alle Kommandos, die auch auf github im Original drin standen. Deshalb hat der erste Versuch mit  "echo CMD_MODE_MANUAL | netcat localhost 7077" auch nicht funktioniert und sich FHEM direkt mal aufgehängt. Nachdem ich die Kommandos dann ergänzt hatte, hat es auf Anhieb funktioniert.
Grundsätzlich musste ich bei meinen Dummies noch berücksichtigen, dass die Anlage auch von extern gesteuert werden kann und dann der Zustand nicht mehr konsistent ist, aber ansonsten passt das.
Im Frontend (SmartVisu) sieht das jetzt wie im Anhang aus. Die Modus-Umschaltung brauch ich da nicht, das wird ja dann nur im Hintergrund angetriggert, wenn ich in den Urlaub gehe.

Raspberry Pi 3 + FHEM + Smartvisu/Fronthem, CUL, HMLAN, Enocean USB300, Eltako (FAM14, FSB14, FSR,FTS14EM,Multisensor,...) - MySQL DB + 2.Raspberry für Heizungsregelung und 3. Raspberry als Alarmanlage

Fistandantilus

Hallo zusammen,

ich habe gerade mein System aus verschiedenen Gründen komplett aufgesetzt und auch mit der Python Version jetzt keine Probleme mehr. Das Script starte ich jetzt auch wie hier im Thread angegeben mit:

define FHEMStart notify global:INITIALIZED.* {system("/opt/loxberry/data/plugins/fhem/scripts/ccfhem.py --ip xxx.xxx.xxx.xxx &")}

Das funktioniert auch soweit gut. Was mich allerdings stört, sind die Logeinträge. Habt Ihr eine Idee, wie ich die noch los werde? Hab schon verbose=0 und DbLogExclude .* versucht - ohne Erfolg.

VG
F.
Raspberry Pi 3 + FHEM + Smartvisu/Fronthem, CUL, HMLAN, Enocean USB300, Eltako (FAM14, FSB14, FSR,FTS14EM,Multisensor,...) - MySQL DB + 2.Raspberry für Heizungsregelung und 3. Raspberry als Alarmanlage

Fistandantilus

Hab es gerade selbst gelöst.

Im Script folgende Zeilen einfügen:

import sys
sys.stdout = None


VG
F.
Raspberry Pi 3 + FHEM + Smartvisu/Fronthem, CUL, HMLAN, Enocean USB300, Eltako (FAM14, FSB14, FSR,FTS14EM,Multisensor,...) - MySQL DB + 2.Raspberry für Heizungsregelung und 3. Raspberry als Alarmanlage

dark-forest

Hallo Zusammen,

ich bin absoluter FHEM Neuling. Habe es parallel auf meinen Raspberry Pi mit IO Broker am Laufen.
Die Installation von Python3, das speichern des Skripts, sowie das Anlegen des Dummys in FHEM
habe ich auch hinbekommen.
Wenn ich nun aber über Telnet das Skript starte kommen folgende Fehler:

Tut mir leid, dass ich euch damit belästige, komme aber einfach nicht weiter...


/opt/fhem/scripts/ccfhem.py
Socket opened: localhost listen to 7077
localhost
7072
Bridge found: 00000000000d10128001144fd71e070d (192.168.178.7)
BRIDGE: write_message(): 00000000000000000000000000000010 -> 00000000000d10128001144fd71e070d: 08032001 0801
type: StartSessionRequestType
reference: 1

takeover: true

BRIDGE: read_message(): 00000000000d10128001144fd71e070d -> 00000000000000000000000000000010: 083510002001
type: StartSessionConfirmType
result: OK
reference: 1


BRIDGE: write_message(): 00000000000000000000000000000010 -> 00000000000d10128001144fd71e070d: 08652002
type: KeepAliveType
reference: 2

BRIDGE: write_message(): 00000000000000000000000000000010 -> 00000000000d10128001144fd71e070d: 08262003 08c00110011802
type: CnRpdoRequestType
reference: 3

pdid: 192
zone: 1
type: 2


BRIDGE: read_message(): 00000000000d10128001144fd71e070d -> 00000000000000000000000000000010: 0820 0801100118012002
type: CnNodeNotificationType

nodeId: 1
productId: 1
zoneId: 1
mode: NODE_NORMAL

BRIDGE: read_message(): 00000000000d10128001144fd71e070d -> 00000000000000000000000000000010: 0820 080d100518ff012002
type: CnNodeNotificationType

nodeId: 13
productId: 5
zoneId: 255
mode: NODE_NORMAL

BRIDGE: read_message(): 00000000000d10128001144fd71e070d -> 00000000000000000000000000000010: 082710002003
type: CnRpdoConfirmType
result: OK
reference: 3


BRIDGE: write_message(): 00000000000000000000000000000010 -> 00000000000d10128001144fd71e070d: 08262004 084110011801
type: CnRpdoRequestType
reference: 4

pdid: 65
zone: 1
type: 1

BRIDGE: read_message(): 00000000000d10128001144fd71e070d -> 00000000000000000000000000000010: 082710002004
type: CnRpdoConfirmType
result: OK
reference: 4


BRIDGE: write_message(): 00000000000000000000000000000010 -> 00000000000d10128001144fd71e070d: 08262005 08a20210011801
type: CnRpdoRequestType
reference: 5

pdid: 290
zone: 1
type: 1

BRIDGE: read_message(): 00000000000d10128001144fd71e070d -> 00000000000000000000000000000010: 082710002005
type: CnRpdoConfirmType
result: OK
reference: 5


BRIDGE: write_message(): 00000000000000000000000000000010 -> 00000000000d10128001144fd71e070d: 08262006 08a30210011801
type: CnRpdoRequestType
reference: 6

pdid: 291
zone: 1
type: 1

BRIDGE: read_message(): 00000000000d10128001144fd71e070d -> 00000000000000000000000000000010: 082710002006
type: CnRpdoConfirmType
result: OK
reference: 6


BRIDGE: write_message(): 00000000000000000000000000000010 -> 00000000000d10128001144fd71e070d: 08262007 08a40210011801
type: CnRpdoRequestType
reference: 7

pdid: 292
zone: 1
type: 1

BRIDGE: read_message(): 00000000000d10128001144fd71e070d -> 00000000000000000000000000000010: 082710002007
type: CnRpdoConfirmType
result: OK
reference: 7


BRIDGE: write_message(): 00000000000000000000000000000010 -> 00000000000d10128001144fd71e070d: 08262008 08a60210011801
type: CnRpdoRequestType
reference: 8

pdid: 294
zone: 1
type: 1

BRIDGE: read_message(): 00000000000d10128001144fd71e070d -> 00000000000000000000000000000010: 082710002008
type: CnRpdoConfirmType
result: OK
reference: 8


BRIDGE: write_message(): 00000000000000000000000000000010 -> 00000000000d10128001144fd71e070d: 08262009 08e30110011801
type: CnRpdoRequestType
reference: 9

pdid: 227
zone: 1
type: 1

BRIDGE: read_message(): 00000000000d10128001144fd71e070d -> 00000000000000000000000000000010: 082710002009
type: CnRpdoConfirmType
result: OK
reference: 9


BRIDGE: write_message(): 00000000000000000000000000000010 -> 00000000000d10128001144fd71e070d: 0826200a 083110011801
type: CnRpdoRequestType
reference: 10

pdid: 49
zone: 1
type: 1

BRIDGE: read_message(): 00000000000d10128001144fd71e070d -> 00000000000000000000000000000010: 08271000200a
type: CnRpdoConfirmType
result: OK
reference: 10


BRIDGE: write_message(): 00000000000000000000000000000010 -> 00000000000d10128001144fd71e070d: 0826200b 08920210011806
type: CnRpdoRequestType
reference: 11

pdid: 274
zone: 1
type: 6

BRIDGE: read_message(): 00000000000d10128001144fd71e070d -> 00000000000000000000000000000010: 08271000200b
type: CnRpdoConfirmType
result: OK
reference: 11


BRIDGE: write_message(): 00000000000000000000000000000010 -> 00000000000d10128001144fd71e070d: 0826200c 08930210011806
type: CnRpdoRequestType
reference: 12

pdid: 275
zone: 1
type: 6

BRIDGE: read_message(): 00000000000d10128001144fd71e070d -> 00000000000000000000000000000010: 0828 08c00112023d00
type: CnRpdoNotificationType

pdid: 192
data: "=\000"

192 = 61
BRIDGE: read_message(): 00000000000d10128001144fd71e070d -> 00000000000000000000000000000010: 0828 0841120102
type: CnRpdoNotificationType

pdid: 65
data: "\002"

65 = 2
BRIDGE: read_message(): 00000000000d10128001144fd71e070d -> 00000000000000000000000000000010: 08271000200c
type: CnRpdoConfirmType
result: OK
reference: 12


BRIDGE: write_message(): 00000000000000000000000000000010 -> 00000000000d10128001144fd71e070d: 0826200d 08940210011806
type: CnRpdoRequestType
reference: 13

pdid: 276
zone: 1
type: 6

BRIDGE: read_message(): 00000000000d10128001144fd71e070d -> 00000000000000000000000000000010: 08271000200d
type: CnRpdoConfirmType
result: OK
reference: 13


BRIDGE: write_message(): 00000000000000000000000000000010 -> 00000000000d10128001144fd71e070d: 0826200e 08dd0110011806
type: CnRpdoRequestType
reference: 14

pdid: 221
zone: 1
type: 6

BRIDGE: read_message(): 00000000000d10128001144fd71e070d -> 00000000000000000000000000000010: 08271000200e
type: CnRpdoConfirmType
result: OK
reference: 14


BRIDGE: write_message(): 00000000000000000000000000000010 -> 00000000000d10128001144fd71e070d: 0805200f
type: ListRegisteredAppsRequestType
reference: 15


BRIDGE: read_message(): 00000000000d10128001144fd71e070d -> 00000000000000000000000000000010: 0837200f 0a240a100967118d4f8f42f1bef58de381a83c7012106950686f6e6520766f6e204a6f7365660a1f0a10cd11975849c24c73b29712c0854c76dd120b4a6f7365667320695061640a180a100000000000000000000000000000001012044648454d
type: ListRegisteredAppsConfirmType
reference: 15

apps {
  uuid: "\tg\021\215O\217B\361\276\365\215\343\201\250<p"
  devicename: "iPhone von Josef"
}
apps {
  uuid: "\315\021\227XI\302Ls\262\227\022\300\205Lv\335"
  devicename: "Josefs iPad"
}
apps {
  uuid: "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020"
  devicename: "FHEM"
}

Traceback (most recent call last):
  File "/opt/fhem/scripts/ccfhem.py", line 313, in <module>
    main()
  File "/opt/fhem/scripts/ccfhem.py", line 260, in main
    setreading('registeredDevices', devices)
  File "/opt/fhem/scripts/ccfhem.py", line 163, in setreading
    fhemsend(cmd)
  File "/opt/fhem/scripts/ccfhem.py", line 150, in fhemsend
    fhem.send(msg.encode('ascii'))
BrokenPipeError: [Errno 32] Broken pipe
BRIDGE: read_message(): 00000000000d10128001144fd71e070d -> 00000000000000000000000000000010: 0828 08a30212013f
type: CnRpdoNotificationType

pdid: 291
data: "?"

291 = 63
Exception in thread Thread-2:
Traceback (most recent call last):
  File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.5/threading.py", line 862, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/local/lib/python3.5/dist-packages/pycomfoconnect/comfoconnect.py", line 315, in _message_thread_loop
    self._handle_rpdo_notification(message)
  File "/usr/local/lib/python3.5/dist-packages/pycomfoconnect/comfoconnect.py", line 361, in _handle_rpdo_notification
    self.callback_sensor(message.msg.pdid, val)
  File "/opt/fhem/scripts/ccfhem.py", line 195, in callback_sensor
    setreading(var, value)
  File "/opt/fhem/scripts/ccfhem.py", line 163, in setreading
    fhemsend(cmd)
  File "/opt/fhem/scripts/ccfhem.py", line 150, in fhemsend
    fhem.send(msg.encode('ascii'))
BrokenPipeError: [Errno 32] Broken pipe

BRIDGE: write_message(): 00000000000000000000000000000010 -> 00000000000d10128001144fd71e070d: 08032010 0800
type: StartSessionRequestType
reference: 16

takeover: false

BRIDGE: read_message(): 00000000000d10128001144fd71e070d -> 00000000000000000000000000000010: 083510002010
type: StartSessionConfirmType
result: OK
reference: 16


BRIDGE: write_message(): 00000000000000000000000000000010 -> 00000000000d10128001144fd71e070d: 08652011
type: KeepAliveType
reference: 17


BRIDGE: write_message(): 00000000000000000000000000000010 -> 00000000000d10128001144fd71e070d: 08262012 08c00110011802
type: CnRpdoRequestType
reference: 18

pdid: 192
zone: 1
type: 2

BRIDGE: read_message(): 00000000000d10128001144fd71e070d -> 00000000000000000000000000000010: 0820 0801100118012002
type: CnNodeNotificationType

nodeId: 1
productId: 1
zoneId: 1
mode: NODE_NORMAL

BRIDGE: read_message(): 00000000000d10128001144fd71e070d -> 00000000000000000000000000000010: 0820 080d100518ff012002
type: CnNodeNotificationType

nodeId: 13
productId: 5
zoneId: 255
mode: NODE_NORMAL

BRIDGE: read_message(): 00000000000d10128001144fd71e070d -> 00000000000000000000000000000010: 082710002012
type: CnRpdoConfirmType
result: OK
reference: 18


BRIDGE: write_message(): 00000000000000000000000000000010 -> 00000000000d10128001144fd71e070d: 08262013 084110011801
type: CnRpdoRequestType
reference: 19

pdid: 65
zone: 1
type: 1

BRIDGE: read_message(): 00000000000d10128001144fd71e070d -> 00000000000000000000000000000010: 0828 08c00112023d00
type: CnRpdoNotificationType

pdid: 192
data: "=\000"

192 = 61
Exception in thread Thread-3:
Traceback (most recent call last):
  File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.5/threading.py", line 862, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/local/lib/python3.5/dist-packages/pycomfoconnect/comfoconnect.py", line 315, in _message_thread_loop
    self._handle_rpdo_notification(message)
  File "/usr/local/lib/python3.5/dist-packages/pycomfoconnect/comfoconnect.py", line 361, in _handle_rpdo_notification
    self.callback_sensor(message.msg.pdid, val)
  File "/opt/fhem/scripts/ccfhem.py", line 195, in callback_sensor
    setreading(var, value)
  File "/opt/fhem/scripts/ccfhem.py", line 163, in setreading
    fhemsend(cmd)
  File "/opt/fhem/scripts/ccfhem.py", line 150, in fhemsend
    fhem.send(msg.encode('ascii'))
BrokenPipeError: [Errno 32] Broken pipe

Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.5/threading.py", line 862, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/local/lib/python3.5/dist-packages/pycomfoconnect/comfoconnect.py", line 254, in _connection_thread_loop
    self.cmd_rpdo_request(sensor_id)
  File "/usr/local/lib/python3.5/dist-packages/pycomfoconnect/comfoconnect.py", line 480, in cmd_rpdo_request
    use_queue=use_queue
  File "/usr/local/lib/python3.5/dist-packages/pycomfoconnect/comfoconnect.py", line 157, in _command
    reply = self._get_reply(confirm_type, use_queue=use_queue)
  File "/usr/local/lib/python3.5/dist-packages/pycomfoconnect/comfoconnect.py", line 219, in _get_reply
    raise ValueError('Timeout waiting for response.')
ValueError: Timeout waiting for response.

stixif

Hallo Zusammen,

habe das gleich Problem wie dark-forest
kann hier wer evtl. n anhaltspunkt geben was das Problem sein könnte?!?
installiert ist raspbian buster auf einem PI3
Rpi 3B + FHEM + Eltako FAM14 + Homematic

sn0000py

Also habe es auch heute gerade mal installiert, und läuft mal etwas ... ab und zu schmiert es ab und es kommen keine WriteMEssage mehr durch.

Was mich auch interssiert weiss jemand wie diese Timer da laufen, an der app kann man ja auch timer setzten - Party mode für 2 stunden ein?

hme0354

Hat jemand schon eine Idee, wie man die Daten an Loxone weiterleiten kann?

apollon9

Hallo zusammen,
wer bisher Probleme mit gelegentliche Abbrüchen hatte (passiert insbesondere, wenn man parallel noch die Zehnder APP benutzt, dann läuft das Skript gerne mal in einen Timeout und bleibt hängen  - was es aber auch ohne ersichtlichen Grund ganz gern mal so gemacht hat):
Michael Arnauts hat eine neue Version seines 'pycomfoconnect' auf Github gestellt! (am 13.4.2020)
Wichtigstes Feature: "better error handling" - bei mir stellt sich das jetzt so dar, dass mit Öffnen der App eine entsprechende Meldung auf dem Logscreen aufläuft, aber das wichtigste: das Skript nimmt danach die Verbindung wieder auf!

Hoffe das hilft ..

Viele Grüße,
Leonhard

sido

Hallo Leonard,
wie kann ich denn sinnvoll upgraden? Muss ich alle Dateien von Hand ersetzen?
Wollte eigentlich mit
pip3 install --upgrade pycomfoconnect
upgraden, aber Michael hat scheinbar die Versionsnummer nicht erhöht, so dass bei mir nix upgegraded wird.

sido

Habe jetzt so das Upgrade erfolgreich geschafft:
sudo pip3 install --no-index --no-cache-dir --force-reinstall git+https://github.com/michaelarnauts/comfoconnect
Sicher sind nicht alle Optionen notwendig...

hme0354

Hat jemand eine Idee wie man einen Befehl über fhem im hex format an das comfoconnect schickt?

hme0354

hab gerade vom Entwickler des pycomfoconnect gehört, dass er an einer neuen Version arbeitet, die aber nicht kompatibel mit der Kommunikation der alten sein wird.

mh83lox

Hallo,
ich hänge bei/nach der Installation des Scripts. Es erscheint:

loxberry@loxberry:/opt/fhem/scripts $ /opt/fhem/scripts/ccfhem.py -h
  File "/opt/fhem/scripts/ccfhem.py", line 3
    import argparse import socket import ast from pycomfoconnect import *
                         ^
SyntaxError: invalid syntax


Was habe ich falsch gemacht?

ChristianR77

Hallo Zusammen!

hme0354 hat sich viel Zeit genommen und für mich das Script installiert. Es läuft seit einer Woche ohne größere Probleme.

Jetzt hab ich aber eine Problem mit dem UDP-Traffic. Mir würde der Status alle 1-5 Minuten locker ausreichen. Zur Zeit wird jede Sekunde ein Status an Loxone geschickt. Das verursacht mir zuviel Traffic und dadurch gehen andere UDPs verloren.

Hat jemand ne Idee, wie ich den Traffic reduzieren kann?

Grüße
Chris

ChristianR77


Hallo nochmal!


Unten ist mal das myUtils-File mit dem das UDP-Paket generiert wird.


Habe ich hier eine Möglichkeit ein Sendeintervall festzulegen? Falls nein, wo kann ich das machen?
Jetzt sendet er UDP-Pakete im Sekundentakt - und das ist mir eindeutig zu häufig.


Grüße
Chris



[/code][font=verdana][size=78%]##############################################[/font][/size]
# $Id: myUtilsTemplate.pm 7570 2015-01-14 18:31:44Z rudolfkoenig $
#
# Save this file as 99_myUtils.pm, and create your own functions in the new
# file. They are then available in every Perl expression.


package main;


use strict;
use warnings;
use POSIX;


sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
}


# Enter you functions below _this_ line.


#UDP Befehle senden
sub UDP_Msg($$$)
{
my ($dest,$port,$cmd) = @_;
my $sock = IO::Socket::INET->new(
Proto => 'udp',
PeerPort => $port,
PeerAddr => $dest
) or die "Could not create socket: $!\n";
$sock->send($cmd) or die "Send error: $!\n";
return "send $cmd";
}


#HarmonyActivityToLoxone
#1 currentActivity
#2 state


sub Q350ToLoxone($)
{
my ($device) = @_;
my
$Abluftfeuchte=ReadingsVal("$device","Abluftfeuchte","-1");
my
$Ablufttemperatur=ReadingsVal("$device","Ablufttemperatur","-1");
my
$Abluftventilatorvolumen=ReadingsVal("$device","Abluftventilatorvolumen","-1");
my
$Aussenluftfeuchte=ReadingsVal("$device","Aussenluftfeuchte","-1");
my
$Aussenlufttemperatur=ReadingsVal("$device","Aussenlufttemperatur","-1");
my
$Bypass=ReadingsVal("$device","Bypass","-1");
my
$Filterwechsel=ReadingsVal("$device","Filterwechsel","-1");
my
$Fortluftfeuchte=ReadingsVal("$device","Fortluftfeuchte","-1");
my
$Fortlufttemperatur=ReadingsVal("$device","Fortlufttemperatur","-1");
my
$Leistung=ReadingsVal("$device","Leistung","-1");
my
$ModusTXT=ReadingsVal("$device","Modus","-1");
my
$Stufe=ReadingsVal("$device","Stufe","-1");
my
$Zuluftfeuchte=ReadingsVal("$device","Zuluftfeuchte","-1");
my
$Zulufttemperatur=ReadingsVal("$device","Zulufttemperatur","-1");
my
$Zuluftventilatorvolumen=ReadingsVal("$device","Zuluftventilatorvolumen","-1");
my
$NextTime=ReadingsVal("$device","NextTime","-1");
my
$BYPASS_MODUS=ReadingsVal("$device","BYPASS_MODUS","-1");
my
$BypassZeit=ReadingsVal("$device","BypassZeit","-1");
my
$Temperaturprofil=ReadingsVal("$device","Temperaturprofil","-1");
my
$DrehzahlAbluftventilator=ReadingsVal("$device","DrehzahlAbluftventilator","-1");
my
$DrehzahlZuluftventilator=ReadingsVal("$device","DrehzahlZuluftventilator","-1");


UDP_Msg("192.168.178.65" , "7002" , "$device: $Abluftfeuchte $Ablufttemperatur $Abluftventilatorvolumen $Aussenluftfeuchte $Aussenlufttemperatur $Bypass $Filterwechsel $Fortluftfeuchte $Fortlufttemperatur $Leistung $ModusTXT $Stufe $Zuluftfeuchte $Zulufttemperatur $Zuluftventilatorvolumen $NextTime $BYPASS_MODUS $BypassZeit $Temperaturprofil $DrehzahlAbluftventilator $DrehzahlZuluftventilator");
}


1;