結果:
Hi,
I was wondering if anyone could help me with how I can simplify this part of my script, specifically scenario 1-3, so that it is easier to read. Perhaps with functions etc. (the comments are in swedish sorry heh. But the script works).
Thanks in advance!
F1_batt_till_P19 = zeros(8760,length(Effekt)); % det som batteriet laddar upp fastigheten med
F1_Elkons_batt = zeros(8760,length(Effekt)); % konsumtionen från nätet av batteriet
F1_batterilast_tot = zeros(8760,length(Effekt)); % batterilasten lagras kontenueligt.
F1_elkonsum = [];
for k = 1: length(Effekt) % går igenom alla olika effekter mellan 100 - 1000 kW
F1_last_batt = 0; % batteriet måste nollas efter varje ny effekt.
batterikapacitet = Kapacitet(k); % såhär stort är batteriet beroende på effekten. Beror på C rate (blir dubbelt så stort som effekten).
batterikapacitet_min = batterikapacitet * SOC_low/100; % undre gräns
batterikapacitet_max = batterikapacitet *SOC_high/100; % övre gräns
F1_last_batt = batterikapacitet_min; % hur mycket kapacitet har batteriet. Finns det något . Börjar tomt.
for i = 1:12 % gå igenom månaderna
mon = [31,28,31,30,31,30,31,31,30,31,30,31];
slut = mon(i)*24;
% medelkonsumtionen (i kW) per månad Elkons_months_eft(744,12)
medel_kons = mean(Elkons_months_eft(1:slut, i)); % Månadens medelkonsumtion
for m = 1:slut % gå igenom timmarna per månad
% går igenom varje timme (m), för varje månad (i).
% scenario 1 - batteriet laddar ur till medelvärdet
if Elkons_months_eft(m,i) > medel_kons
topp = Elkons_months_eft(m,i) - medel_kons; % storleken på toppen över medelvärde
% Om batteriet inte är tomt från början. Om det kan laddas ur.
if F1_last_batt > batterikapacitet_min
% Om batteriet kan laddas ur med hela efffekten utan att gå under min
if (F1_last_batt - Effekt(k)) >= batterikapacitet_min
% Om toppen är större eller lika med än vad som får kapas med batteriet - hela effekten används.
if topp >= Effekt(k) % A
F1_batt_till_P19( (24*sum(mon(1:i-1)) + m) ,k) = Effekt(k); % effekt under timmen som batteriet tillgodoser till Pyramiden 19
F1_last_batt = F1_last_batt - Effekt(k); % batteriet laddas ur med hela effekten den timmen
% Om toppen inte är större än effekten - hela toppen kapas.
else % B
F1_batt_till_P19((24*sum(mon(1:i-1)) + m) ,k) = topp;
F1_last_batt = F1_last_batt - topp;
end
% Om batteriet inte kan tömmas med hela effekten.
else
liten_effekt = F1_last_batt - batterikapacitet_min; % mängden som kan laddas ur.
% Om toppen är större än det vi kan använda – allt som är kvar används
if topp >= liten_effekt % C
F1_batt_till_P19((24*sum(mon(1:i-1)) + m) , k) = liten_effekt; % effekt under timmen som batteriet tillgodoser till Pyramiden 19
F1_last_batt = F1_last_batt - liten_effekt; % batteriet laddas ur till min
% Om toppen inte är större än det vi kan använda - hela toppen kapas
else % D
F1_batt_till_P19( (24*sum(mon(1:i-1)) + m) ,k) = topp;
F1_last_batt = F1_last_batt - topp;
end
end
end
% scenario 2 - batteriet laddar upp och tar från nätet
elseif Elkons_months_eft(m,i) < medel_kons
% Om batteriet inte är fullt
if F1_last_batt < batterikapacitet_max
% Om det får plats en laddning av hela effekten – Batteriet laddas upp
if (F1_last_batt + Effekt(k)) <= batterikapacitet_max
% Om uppladdningen inte överstiger medelvärdet – Batteriet laddas upp med effekten
if (Elkons_months_eft(m,i) + Effekt(k)) <= medel_kons % A
F1_Elkons_batt((24*sum(mon(1:i-1)) + m),k) = Effekt(k); % mängden som tas från nätet
F1_last_batt = F1_last_batt + Effekt(k);
% Om uppladdningen överstiger medelvärdet – Batteriet laddas upp med det som går
else % B
till_medel = medel_kons - Elkons_months_eft(m,i);
F1_Elkons_batt((24*sum(mon(1:i-1)) + m),k) = till_medel;
F1_last_batt = F1_last_batt + till_medel;
end
% Om det får plats mindre än hela efffekten i en laddning – Batteriet laddas fullt
else
plats = batterikapacitet_max - F1_last_batt; % det som får plats i batteriet
% Om elkonsumtionen ej överstiger medelvärdet – Batteriet laddas upp till max-taket
if (Elkons_months_eft(m,i) + plats) <= medel_kons % C
F1_Elkons_batt((24*sum(mon(1:i-1)) + m),k) = plats;
F1_last_batt = F1_last_batt + plats;
% Om elkonsumtionen överstiger medelvärdet – Batteriet laddas upp med det som går
else % D
till_medel = medel_kons - Elkons_months_eft(m,i);
F1_Elkons_batt((24*sum(mon(1:i-1)) + m),k) = till_medel;
F1_last_batt = F1_last_batt + till_medel;
end
end
end
% scenario 3 - om inget händer
elseif Elkons_months_eft(m,i) == medel_kons
% inget händer. Precis som jag vill ha det.
end
F1_batterilast_tot((24*sum(mon(1:i-1)) + m),k) = F1_last_batt; % lägger in batterilasten för timmen i en lista.
end % slut - for timmar per mån (m)
end %slut for - månaderna (i)
% tar bort den sista uppladdningen av batteriet så det kommer ner till min värdet iaf
% får ta bort min värdet kostnaden sen manuellt.
for p = 0:(8760-1)
% Om batteriet har laddning över min kvar i slutet
if F1_last_batt > batterikapacitet_min
over = F1_last_batt - batterikapacitet_min;
% Om platsen är större än eller lika med laddningen på batteriet – Batteriet töms ner till min
if F1_Elkons_batt(end-p,k) >= over
F1_Elkons_batt(end-p,k) = F1_Elkons_batt(end-p,k) - over;
F1_last_batt = batterikapacitet_min;
F1_batterilast_tot(end-p,k) = batterikapacitet_min;
% Om platsen är mindre än laddningen på batteriet – Batteriet töms med hela platsen
elseif F1_Elkons_batt(end-p,k) < over
F1_last_batt = F1_last_batt - F1_Elkons_batt(end-p,k);
F1_batterilast_tot(end-p,k) = batterikapacitet_min;
F1_Elkons_batt(end-p,k) = 0;
end
end
end
end % slut for - effekt (k)
% summerar ihop året till ett värde. Får ett värde för varje effekt.
F1_elkonsum_sum =[];
F1_batt_till_P19_sum =[];
F1_Elkons_batt_sum = [];
F1_effekttopp_medel_year = []; % medel effekttopp under året
for v = 1:length(Effekt)
F1_elkonsum(:,v) = (Elkonsumtion_eft(:,1) - F1_batt_till_P19(:,v)) + F1_Elkons_batt(:,v); % elnätskonsumtion under året
F1_elkonsum_sum(v) = sum(F1_elkonsum(:,v));
F1_batt_till_P19_sum(v) = sum(F1_batt_till_P19(:,v));
F1_Elkons_batt_sum(v) = sum(F1_Elkons_batt(:,v));
end
% figure; yyaxis right; plot(F1_elkonsum(:,20));
% hold on; plot(Elkonsumtion_eft(:,1));
% hold on; yyaxis left; plot(F1_batterilast_tot(:,20)); legend('Konsum','ladd');
% Beräknar maxeffekten (toppen) för varje månad för alla effekter. Blir en 12 x length(effekt) lista
% Den går per rad och tar maxeffekten för månaden för alla kolumner = för alla olika effekter.
F1_effekttopp_months = zeros(12,length(Effekt)); % effekttopp under månaden för alla olika effekter.
mon = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
for b = 1:12
F1_effekttopp_months(b,:) = max(F1_elkonsum( (24*sum(mon(1:b-1)) + 1) : 24*sum(mon(1:b)) , : ) ); % [kW]
end
% beräknar medeleffekten för året
for v = 1:length(Effekt)
F1_effekttopp_medel_year(v) = mean(F1_effekttopp_months(:,v));
end
Hi, I'm losing comms with thingspeak after exactly one hour. I'm on the free plan while I evaluate TS.
I am sending data once a minute. It works fine for one hour, and I get 200-OK responses. After exactly 1 hour, the response from TS is a 404-not found. I do a new DNS lookup, and get a new IP address for TS. Still no response. I do more DNS lookups, and get another different IP address. It cycles through 3 different IP addresses, but noe of them work one hour after bootup on my device.
I'm running an Arduino Nano with an Ethercard and the JNH library. I can still ping the arduino, serve webpages and ping a monitored device, and get NTP time, all in a 1 minute loop, so I doubt the TCP/IP stack has crashed.
after I restart the device, it works again for exactly one hour, and the I lose comms with Thingspeak again.
Any help would be appreciated!
Thanks,
Adrian
In my struggle to get my SIM7600 connected to thingspeak using MQTT, i went to the basics: simple testing of my connection:
I use this site : https://testclient-cloud.mqtt.cool
Protocol :tcp
Host : mqtt3.thingspeak.com
Port : 1883
Username : got it from my device (double checked !)
Password : got it from my device (double checked !)
When i try to connect I get the message Connection refused : bad user name or password.
I am completely lost. What basic stupi mistake am i missing. I thoroughly read the MQTT help pages.
Any help is appreciated.
Update :
When i select Dedicated connection and i also fill in the will message and will topic, i am able to update my channel. At least some progress.
my Channel ID 2305210 and Channel ID 2300906 are not working properly. Pl.Guide me
Hi there,
I hope someone can help me on this.
I have written a code to connect my SIM7600 to Thingspeak using MQTT. It is basically an aruidino code. All instructions are echo's with an OK message so assume those instrictions are correct. However, the final step, publishing the message to the MQTT server return an error : CMQTTCONNLOST : 0,1.
Any idea which instructions might be wron?
I included the commands send.
10:09:09.031 -> AT+CMQTTPUB=0,0,60,0,0
10:09:09.031 -> +CMQTTPUB: 0,0
10:09:09.031 ->
10:09:09.031 -> OK
10:09:09.031 ->
10:09:09.031 -> +CMQTTCONNLOST: 0,1
The program :
SerialAT.begin(115200, SERIAL_8N1, RXD2, TXD2);
delay(1000);
SerialAT.println("AT+CRESET"); // Reset the SIM7600 module
Read_Response(30000);
SerialAT.println("AT+IPR=115200"); // Set Baudrate of the SIM7600 module
Read_Response(30000);
SerialAT.println("AT+CSQ"); // Check signal level
Read_Response(10000);
SerialAT.println("AT+COPS?"); // Query network information
Read_Response(10000);
SerialAT.println("AT+CMQTTSTOP"); //Stop MQTT service
Read_Response(10000);
SerialAT.println("AT+CMQTTSTART"); //Start MQTT service
Read_Response(10000);
SerialAT.println("AT+CSSLCFG=\"sslversion\",0,3"); //Configure SSL contect ssl_ctxindex,sslversion <0,TLS1.2>
Read_Response(10000);
SerialAT.println("AT+CSSLCFG=\"authmode\",0,0"); //Establishing MQTT Connection <ssl_ctx_index,authmode<0,no autentification>
Read_Response(10000);
SerialAT.println("AT+CMQTTACCQ=0,\"Username\",0,4"); // Acquire a client <client_index,client_ID>
Read_Response(10000);
SerialAT.println("AT+CMQTTSSLCFG=0,0"); // Set the SSL context <session_id,ssl_ctx_index> ssl_ctx_index check AT+CSSLCFG command
Read_Response(10000);
SerialAT.println("AT+CMQTTCONNECT=0,\"tcp://mqtt3.thingspeak.com:1883\",90,1,\"Username\",\"password\""); //Connect to MQTT server <client_index,server_addr,keep_alive time,clean_session,username,password>
Read_Response_Ignore_OK(3000);
String payload="\"channels/"+ String(ChannelId)+"/publish\"";
int Payload_Length;
Payload_Length=payload.length();
SerialAT.println("AT+CMQTTTOPIC=0,"+String(Payload_Length)); // Input the publish message topic <client_index,req_length>
SerialAT.println(payload);
Read_Response_Ignore_OK(3000);
payload="field1=12&field2=13&status=MQTTPUBLISH";
Payload_Length=payload.length();
SerialAT.println("AT+CMQTTPAYLOAD=0,"+String(Payload_Length)); // input the publish message body <client_index,req_length>
SerialAT.println(payload);
Read_Response_Ignore_OK(1000);
SerialAT.println("AT+CMQTTPUB=0,0,60,0,0"); // Publish a message to the server <client_id,qos,pub_timeout,retained>
Read_Response_Ignore_OK(1000);
Serial.print(Receive_buffer);
Serial.println("And we are done");
Adam and Heather will be discussing new features in R2023b and answering your questions in a few hours - visit the link below to check out the preview and sign up for notification.
Adam Danz just launched a new blog about MATLAB Graphics and App Building.
As you know, He has been a prolific contributor to MATLAB Answers and one of his answers recently won the Editor's Choice Award.
If there are any topics or questions you are interested in, please share with Adam, and I am sure he will get those into his blog.
Calling all students! New to MATLAB or need helpful resources? Check out our MATLAB GitHub for Students repository! Find MATLAB examples, videos, cheat sheets, and more!

Visit the repository here: MATLAB GitHub for Students
Imagine x is a large vector and you want the smallest 10 elements. How might you do it?

4 months ago, the new API was published to access content on the MATLAB Central community. I shared my MATLAB code to access the API at that time, but the team just released the official SDK.
MATLAB toolbox on File Exchange: https://www.mathworks.com/matlabcentral/fileexchange/135567-matlab-central-interface-for-matlab
Houman and Rameez will talk about how you can model wireless networks (5G, WLAN, Bluetooth, 802.11ax WLAN mesh, etc.) in MATLAB in the upcoming livestream. They will start with the basics such as nodes, links, topology and metrics. Then they will introduce a new free add-on library that lets you model such networks, and show you how to use it.
- Date: Thu, Oct 5, 2023
- Time: 11 am EDT (or your local time)
Bookmark this link:

Congratulations, @Adam Danz for winning the Editor's Pick badge awarded for MATLAB Answers, in recognition of your awesome solution in overlapping images in grid layout.
Thank you for going to great lengths to help a user in this thread by suggesting alternative approach to representing stack of playing cards in MATLAB, highlighting very interesting features like hggroup.
This badge recognizes awesome answers people contribute and yours was picked for providing a very detailed and helpful answer.
Thank you so much for setting a high standard for MATLAB Answers and for your ongoing contribution to the community.
MATLAB Central Team

I wanted to write to my public channel 2278931 with 8 different values to 8 different gauge widgets.
Here is my link.
https://api.thingspeak.com/update.json?api_key=xxxxxxxxxxxxxxxx&field1=1&field2=2&field3=3&field4=4&field5=5&field6=6&field7=7&field8=8
You can change values and in the link to change gauge values. On edit I edited my write key to make it not work for others but it will work with your own key.
You had a meteoric rise to in our community since you started answering questions in June 2020.
You provided 3218 answers and 926 votes. You are ranked #23 in the community. Thank you for your contribution to the community and please keep up the good track record!
MATLAB Central Team
Up until a few weeks ago, there was a "channels shared with me" option in Thingspeak. I was able to access the channel created by a different user, only once. The next time me and my groupmate tried to open the channel, there wasn't a "channels shared with me" option anymore. Why is that and how can this be resolved?
MATLAB Onramp is a free online tutorial and it has been very popular with new MATLAB users to learn how to use it, and MathWorks have been adding more and more modules. The lastest one just dropped https://matlabacademy.mathworks.com/details/power-systems-simulation-onramp/orps
It shows you the basics of power system simulation by modeling a simple microgrid. You will learn how to simulate and measure three-phase circuits, and how to evaluate algorithms like droop control and maximum power point tracking.
Is there any problem from thingspeak side, from last month my data is not uploading
Here's a screenshot from 22 years ago. Thanks for building one of the best engineering and science communities together.

Currently, I am trying to setup MATLAB and Simulink to connect with Unity. But I have some questions about the installation of ROS on my computer and ROS Toolbox. I found that there are several ROS installations, so, could you please kindly help and support? Hoping that your support will help a lot to my master's thesis.
i want make web site for pre registation to the vachile in thish project i can not thinke how to register in port and how to make .....????