Neuigkeiten:

Am Sonntag den 8.12.2024 kann es ab ca. 8:00 Uhr zu kurzzeitigen Einschränkungen / Ausfällen bei den Diensten des FHEM Vereines kommen.
Die Server müssen mal gewartet und dabei neu gestartet werden ;)

Hauptmenü

Wohnraumlüftung mit freeair-connect mittels HTTPMOD / EDIT: jetzt auch Modul

Begonnen von amenomade, 17 Mai 2020, 20:22:59

Vorheriges Thema - Nächstes Thema

amenomade

OK, ich habe es auskommentiert.

Sorry, aber mit SmarVisu kenne ich mich nicht aus.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

eldi0s

Danke, SmartVisu kenn ich auch nicht ;-)

Das Modul liest die Ampeln meiner Meinung nach
falsch aus. Es gibt ja

Grün / Gelb / Orange / Rot

Da hätte ich gedacht

1 / 2 / 3 / 4 oder so

Das Modul zeigt aber wie in meinem Screenshot
teilweise für die gleiche Farbe bei den unterschiedlichen
Sensoren andere Werte?

Beispiel vom vorherigen Post:

TrafficLightCO2
1 ist Grün

TrafficLightFilterExtract
2 ist Grün

TrafficLightFilterSupply
2 ist Grün

TrafficLightHumidity
1 ist Gelb

Kannst du das nochmal anschauen oder ne Legende in die Hilfe integrieren?
Wäre super.

Modul läuft sonst 1A

Danke und Grüße

eldi0s


galdreth

Hallo zusammen. Seit 2021 bis vor ein paar Tagen lief das fhem-Modul bei mir ganz vorzüglich und jetzt sind ein paar Output-Zahlen murks.

Ich logge halbstündlich nicht alle Werte, allerdings habe ich 2 separate freeair-Anlagen. Beide haben ca. gleichzeitig einen Sprung in den Außentemperatur-Daten gezeigt ab dem 7.1. von Knapp über 0 auf +13 grad Celsius. Eigentlich müsste es unter 0 sein. Interessanterweise sind auch mindestens die ausgelesenen AirFlow und EnergySaving Werte unsinnig (0m³/h bzw 0.5W).


Über die Freeair-Webseite von Blumartin sind aber vernünftige aktuelle Zahlen beider Geräte vorhanden.

Kann es sein, dass das Datenformat sich bei der Seite geändert hat? Beobachtet jemand ähnliches bei sich?

Meine fhem-Logs sind leer bis auf gelegentliche "URL error (1): read from https://www.freeair-connect.de:443 timed out"

Edit: Spannenderweise springt meine OutdoorTemp von etwa 15 auf einen Wert knapp über 0, sobald die Temperatur tatsächlich wieder über den Gefrierpunkt steigt. Es geht anscheinend bei der Vorzeichenauswertung etwas schief.

 


galdreth

Die Werte auf der Freeair-Seite sehen alle vernünftig aus. Ich habe mal den Code aus der Seite exktrahiert, falls es hilft.
function createPrimBlobObject(parsedBlob,timestamp,version,versionFA100)
{
var blobObject={};
var division23=[6,1];
var dividedByte23=divideByte(division23,parsedBlob[23]);
var division24=[5,2];
var dividedByte24=divideByte(division24,parsedBlob[24]);
var division25=[5,2];
var dividedByte25=divideByte(division25,parsedBlob[25]);
var division26=[5,2];
var dividedByte26=divideByte(division26,parsedBlob[26]);
var division27=[5,2];
var dividedByte27=divideByte(division27,parsedBlob[27]);
var division28=[5,2];
var dividedByte28=divideByte(division28,parsedBlob[28]);
var division29=[4,3];
var dividedByte29=divideByte(division29,parsedBlob[29]);
var division30=[4,3];
var dividedByte30=divideByte(division30,parsedBlob[30]);
var division31=[4,3];
var dividedByte31=divideByte(division31,parsedBlob[31]);
var division32=[4,3];
var dividedByte32=divideByte(division32,parsedBlob[32]);
var division33=[4,3];
var dividedByte33=divideByte(division33,parsedBlob[33]);
var division34=[4,1,1,1];
var dividedByte34=divideByte(division34,parsedBlob[34]);
var division35=[5,1,1];
var dividedByte35=divideByte(division35,parsedBlob[35]);
var division36=[5,1,1];
var dividedByte36=divideByte(division36,parsedBlob[36]);
var division37=[5,1,1];
var dividedByte37=divideByte(division37,parsedBlob[37]);
var division38=[4,1,1,1];
var dividedByte38=divideByte(division38,parsedBlob[38]);
var division39=[5,2];
var dividedByte39=divideByte(division39,parsedBlob[39]);
var division40=[4,2,1];
var dividedByte40=divideByte(division40,parsedBlob[40]);
var uDeicing=dividedByte23[1];
var uErrorFileNr=dividedByte23[0];
var uErrorState=dividedByte24[0];
var uDefrostExhaust=dividedByte24[1];
var uVentPosSupply=dividedByte25[0];
var uCtrlSetSupVent=dividedByte25[1];
var uVentPosExtract=dividedByte26[0];
var uCtrlSetExtVent=dividedByte26[1];
var uVentPosBath=dividedByte27[0];
var uCtrlSet2ndVent=dividedByte27[1];
var uVentPosBypass=dividedByte28[0];
var uCtrlSetBypVent=dividedByte28[1];
var uTempSupplyHigh=dividedByte29[0];
var uComfortLevel=dividedByte29[1];
var uTempExtractHigh=dividedByte30[0];
var uState=dividedByte30[1];
var uTempExhaustHigh=dividedByte31[0];
var uControlAuto=dividedByte31[1];
var uTempOutdoorHigh=dividedByte32[0];
var uDummy1=dividedByte32[1];
var uTempVirtSupExitHigh=dividedByte33[0];
var uDummy2=dividedByte33[1];
var uPressure4LSB=dividedByte34[0];
var uCFAHigh=dividedByte34[1];
var uFilterSupplyFul=dividedByte34[2];
var uFilterExtractFul=dividedByte34[3];
var uAirFlowAve=dividedByte35[0];
var u2ndRoomOnly20=dividedByte35[1];
var uFanLim2ndRoom=dividedByte35[2];
var uFanExtractRPMHigh=dividedByte36[0];
var uCO2High=dividedByte36[1];
var uDIPSwitchHigh=dividedByte36[2];
var uFanSupplyRPMHigh=dividedByte37[0];
var uHumRedMode=dividedByte37[1];
var uSumCooling=dividedByte37[2];
var uFanSpeed=dividedByte38[0];
var uFSCHigh=dividedByte38[1];
var uFECHigh=dividedByte38[2];
var uCSUHigh=dividedByte38[3];
var uPressure5MSB=dividedByte39[0];
var uErrorLineNrSuperHigh=dividedByte39[1];
var uOperatingHoursSuperHigh=dividedByte40[0];
var uFilterHoursSuperHigh=dividedByte40[1];
var uErrorCodeHigh=dividedByte40[2];
var uTempSupplyLow=parsedBlob[2];
var uTempOutdoorLow=parsedBlob[3];
var uTempExhaustLow=parsedBlob[4];
var uTempExtractLow=parsedBlob[5];
var uTempVirtSupExitLow=parsedBlob[6];
var uFanExtractRPMLow=parsedBlob[7];
var uDIPSwitchLow=parsedBlob[8];
var uFanSupplyRPMLow=parsedBlob[9];
var uErrorLineNrHigh=parsedBlob[10];
var uErrorLineNrLow=parsedBlob[11];
var uErrorCodeLow=parsedBlob[12];
var uCO2Low=parsedBlob[13];
var uOperatingHoursLow=parsedBlob[14];
var uOperatingHoursHigh=parsedBlob[15];
var uFilterHoursLow=parsedBlob[16];
var uFilterHoursHigh=parsedBlob[17];
var uFSCLow=parsedBlob[18];
var uFECLow=parsedBlob[19];
var uCSULow=parsedBlob[20];
var uCFALow=parsedBlob[21];
var uRSSILow=parsedBlob[47];
if(timestamp!=null)blobObject["timestamp"]=timestamp;
if(version!=null)blobObject["version"]=version.replace("x",".");
if(versionFA100!=null)blobObject["versionFA100"]=versionFA100.replace("x",".");
blobObject["HumOutdoor"]=parsedBlob[0];
blobObject["HumExtract"]=parsedBlob[1];
var iTempSupply=lowPlusHigh(uTempSupplyLow,uTempSupplyHigh);
blobObject["TempSupply"]=toSigned(iTempSupply,11)/8;
var iTempOutdoor=lowPlusHigh(uTempOutdoorLow,uTempOutdoorHigh);
blobObject["TempOutdoor"]=toSigned(iTempOutdoor,11)/8;
var iTempExhaust=lowPlusHigh(uTempExhaustLow,uTempExhaustHigh);
blobObject["TempExhaust"]=toSigned(iTempExhaust,11)/8;
var iTempExtract=lowPlusHigh(uTempExtractLow,uTempExtractHigh);
blobObject["TempExtract"]=toSigned(iTempExtract,11)/8;
var iTempVirtSupExit=lowPlusHigh(uTempVirtSupExitLow,uTempVirtSupExitHigh);
blobObject["TempVirtSupExit"]=toSigned(iTempVirtSupExit,11)/8;
blobObject["CO2"]=lowPlusHigh(uCO2Low,uCO2High)*16;
blobObject["Pressure"]=getPressure(uPressure5MSB,uPressure4LSB);
blobObject["ComfortLevel"]=getNumberFrBits(uComfortLevel)+1;
blobObject["State"]=getNumberFrBits(uState);
blobObject["HumRedMode"]=getNumberFrBits(uHumRedMode);
blobObject["FanLim2ndRoom"]=getNumberFrBits(uFanLim2ndRoom);
blobObject["b2ndRoomOnly20"]=getNumberFrBits(u2ndRoomOnly20);
blobObject["bSumCooling"]=getNumberFrBits(uSumCooling);
blobObject["ErrorState"]=getNumberFrBits(uErrorState);
blobObject["FanSpeed"]=getNumberFrBits(uFanSpeed);
blobObject["FanSupplyRPM"]=lowPlusHigh(uFanSupplyRPMLow,uFanSupplyRPMHigh);
blobObject["FanExtractRPM"]=lowPlusHigh(uFanExtractRPMLow,uFanExtractRPMHigh);
blobObject["AirFlowAve"]=getNumberFrBits(uAirFlowAve);
blobObject["FilterSupplyFul"]=getNumberFrBits(uFilterSupplyFul);
blobObject["FilterExtractFul"]=getNumberFrBits(uFilterExtractFul);
blobObject["VentPosExtract"]=getNumberFrBits(uVentPosExtract);
blobObject["VentPosBath"]=getNumberFrBits(uVentPosBath);
blobObject["VentPosSupply"]=getNumberFrBits(uVentPosSupply);
blobObject["VentPosBypass"]=getNumberFrBits(uVentPosBypass);
blobObject["ControlAuto"]=getNumberFrBits(uControlAuto);
blobObject["DIPSwitch"]=lowPlusHigh(uDIPSwitchLow,uDIPSwitchHigh);
blobObject["DefrostExhaust"]=getNumberFrBits(uDefrostExhaust);
blobObject["CtrlSetSupVent"]=getNumberFrBits(uCtrlSetSupVent);
blobObject["CtrlSetExtVent"]=getNumberFrBits(uCtrlSetExtVent);
blobObject["CtrlSet2ndVent"]=getNumberFrBits(uCtrlSet2ndVent);
blobObject["CtrlSetBypVent"]=getNumberFrBits(uCtrlSetBypVent);
blobObject["ErrorFileNr"]=getNumberFrBits(uErrorFileNr);
blobObject["ErrorLineNr"]=lowPlusHigh(uErrorLineNrLow,uErrorLineNrHigh);
blobObject["ErrorCode"]=lowPlusHigh(uErrorCodeLow,uErrorCodeHigh);
blobObject["filter_hours"]=lowPlusHigh(uFilterHoursLow,uFilterHoursHigh,uFilterHoursSuperHigh);
blobObject["operating_hours"]=lowPlusHigh(uOperatingHoursLow,uOperatingHoursHigh,uOperatingHoursSuperHigh);
blobObject["board_version"]=parsedBlob[22];
blobObject["bDeicing"]=getNumberFrBits(uDeicing);
blobObject["FSC"]=lowPlusHigh(uFSCLow,uFSCHigh);
blobObject["FEC"]=lowPlusHigh(uFECLow,uFECHigh);
blobObject["CSU"]=lowPlusHigh(uCSULow,uCSUHigh);
blobObject["CFA"]=lowPlusHigh(uCFALow,uCFAHigh);
blobObject["RoomArea"]=parseDIP(blobObject["DIPSwitch"],0);
blobObject["SecondRoomFlow"]=parseDIP(blobObject["DIPSwitch"],1);
var absHumOutdoor=getAbsHum(blobObject["HumOutdoor"],roundVal(blobObject["TempOutdoor"]));
var absHumExtract=getAbsHum(blobObject["HumExtract"],roundVal(blobObject["TempExtract"]));
var airDensity=getAirDensity(blobObject["Pressure"],blobObject["TempExtract"]);
blobObject["absHumExtract"]=absHumExtract;
blobObject["absHumOutdoor"]=absHumOutdoor;
blobObject["airDensity"]=airDensity;
blobObject["RSSI"]=toSigned(uRSSILow,8);
blobObject["S1"]=parsedBlob[41];
blobObject["S2"]=parsedBlob[42];
blobObject["S3"]=parsedBlob[43];
blobObject["S4"]=parsedBlob[44];
blobObject["S5"]=parsedBlob[45];
blobObject["S6"]=parsedBlob[46];
if(blobObject["FanSpeed"]>2){blobObject["AirFlow"]=blobObject["FanSpeed"]*10}else{blobObject["AirFlow"]=blobObject["AirFlowAve"]}return blobObject}

neodee

#65
Hallo zusammen,

seit ein paar Wochen scheint das Modul freeair connect keine Daten mehr zu liefern. Ich habe mir das heute mal genauer angesehen

2024.03.24 13:39:27 4: freeairconnect (freeair_OG): ERR: DATA:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
</body></html>

2024.03.24 13:39:27 2: freeairconnect (freeair_OG): Error POST setting ComfortLevel ERR:  DATA: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><html><head><title>404 Not Found</title></head><body><h1>Not Found</h1><p>The requested URL was not found on this server.</p></body></html>
2024.03.24 13:39:27 5: freeairconnect (freeair_OG): Params Parse = HASH(0x55651c03ed00), , <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" href="images/BM.png">
    <!--link rel="icon" sizes="192x192" href="images/gg.png"-->
<title id = "tit
2024.03.24 13:39:27 5: freeairconnect (freeair_OG): Parse: Starting
2024.03.24 13:39:27 5: freeairconnect (freeair_OG): Handling data
2024.03.24 13:39:27 2: freeairconnect (freeair_OG): Warning: could not extract first chunk of data from raw data. Aborting update.

Die aufgerufene Seite https://www.freeair-connect.de/buttonUserAjax.php existiert am Server nicht mehr. Man muss wohl seit kurzem beim ändern der Einstellungen ein Passwort eingeben.

Das war vor einiger Zeit definitiv ohne Passwort eingabe möglich.

Hat jemand eine Lösung für das Problem oder wurde das Modul aktualisiert und das ist an mir vorbeigegangen?

Sofern der BluHomeConnect Controller nicht so teuer wäre, hätte ich mir diesen vermutlich bereits gekauft, wobei ich nicht glaube das man die Geräte damit Steuern kann, sondern lediglich die Daten ausgelesen werden können.

Grüße und schönen Sonntag

alefrabe

Hallo,
Ich hab dasselbe Problem. Vor dem Update der hp war wurde das PW nur einmal abgefragt und jetzt auch nochmals beim setzen des Befehls. Hast du mittlerweile eine Lösung dafür oder eine Alternative gefunden ? Grüße Alexander

eldi0s

Hi,

bin mittlerweile mit meiner kompletten Automation auf HomeAssistant umgestiegen, da gibts ne super Integration für die freeAir Geräte:

ha_freeair_connect