Add log viewer for policy evaluation logs

This PR adds a log viewer, visible at https://policykit.metagov.org/logs. Logged-in users can see all the recent logs for their Community. The celery task cleans up old logs: default behavior is to delete logs that are >1hr old.
The db_logger is used to log...

Evaluation logs from execute_policy function ("X action passed Y policy")
Exceptions thrown during policy evaluation, including filter errors
debug statements added by policy authors

The db_logger is not used to log information about actions or anything from integrators. The actstream action log is already sufficient for logging action creation. The purpose of this log viewer, for now anyway, is to debug evaluation. So, each log is for a specific Action+Policy eval pair.
Policy authors can add debug statements like this:

Which are surfaced in the log viewer like this:

The database logs are stored in a table for model EvaluationLog which is defined in the new  django_db_logger app, which is a copy of https://github.com/CiCiUi/django-db-logger customized to fit our needs.

Looks great!


Add / enable feedback to new admin panel

Adds a feedback module to Nova
Can't prefil actions against feedback so added copy paste function
Also fixed bug I was getting on PHP 7.4 in the feedback controller

@CalumTowers opened PR for review, but still worth testing locally. I've done all the perms, but you should be able to check this out and it just work

@CalumTowers opened PR for review, but still worth testing locally. I've done all the perms, but you should be able to check this out and it just work

Back over to you following my amends - let me know your thoughts.
I'm comfortable with us removing the functionality to configure forms from within the admin panel.

@CalumTowers opened PR for review, but still worth testing locally. I've done all the perms, but you should be able to check this out and it just work

Back over to you following my amends - let me know your thoughts.
I'm comfortable with us removing the functionality to configure forms from within the admin panel.

Only thing I can see missing is permission to view on feedback (or not as it might be)

@CalumTowers opened PR for review, but still worth testing locally. I've done all the perms, but you should be able to check this out and it just work

Back over to you following my amends - let me know your thoughts.
I'm comfortable with us removing the functionality to configure forms from within the admin panel.

Only thing I can see missing is permission to view on feedback (or not as it might be)

The perms appeared to work fine when I tested locally for viewing the different forms. Can you double check?

@CalumTowers opened PR for review, but still worth testing locally. I've done all the perms, but you should be able to check this out and it just work

Back over to you following my amends - let me know your thoughts.
I'm comfortable with us removing the functionality to configure forms from within the admin panel.

Only thing I can see missing is permission to view on feedback (or not as it might be)

The perms appeared to work fine when I tested locally for viewing the different forms. Can you double check?

 It meant to say 'own' feedback.

:tada: This PR is included in version 5.1.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


24hour mode: selecting 12 returns 00.

Using the unmodified 3.0.1

When selecting 12as hour the picker takes 00 as the value.

Thanks! 3.0.2


MM-17652 - Very long email addresses overlap with Role column on LDAP group sync warning modal

Summary
in the warning modal that appears when users will be removed from a team or channel on LDAP sync, very long email addresses overlap with the Role column.
Ticket Link
Fixes https://mattermost.atlassian.net/browse/MM-17652

Okay for QA to test this post-merge. Removing QA Review label.


RPM repository indicates all builds are "nightly"

Hi,
I'm putting together a list of repos that are used by the Kasparov-1 release,
and I noticed an issue with your rpm.manageiq.org repo.
All RPMs for the manageiq appliance are categorized as "nightly",
even those for what appears to be former versions of the appliance like below:
builds/manageiq-nightly/manageiq-appliance-10.1.0-0.4.20200731000015.el8.x86_64.rpm
This makes it a little confusing to pick any one version, as none are categorized as stable.
Do you have another repo for stable RPMs ?
pint2oo

Stable builds are in a different repo.  @bdunne can give you more detail.
@bdunne we should document this somewhere, perhaps as part of upgrade steps.

Hi @pint2oo We have several different rpm repos under rpm.manageiq.org.  For example, https://github.com/ManageIQ/manageiq-rpm_build/blob/1105e161426edfd328a5b25cc0319272d6fbad06/packages/manageiq-release/manageiq-13-morphy.repo shows the repos for the morphy release.  By default we only enable the arch and noarch release repos on the appliances.  However on nightly appliances we enable the nightly repos as well, so RPMs will be pulled from both nightly and release repos.

Closing for now, please reopen if this is still an issue.


thread analyzer: fix formatting for unsigned int

On 64bit systems, this was issuing warnings due to wrong formatting.
Signed-off-by: Anas Nashif<EMAIL_ADDRESS>

@nashif any updates on this.

@nashif any updates on this.

You can use inttypes.h and its string formatting macros like PRIu8 for uint8_t, PRId32 for int32_t and so on. The implementation of the PRI... macros will change for every platform to ensure correct formatter for the value


Allow RSpec/MultipleExpectations to be higher for feature specs

You may put an additional .rubocop.yml file in features directory and configure cops behaviour specific to that folder:
# features/.rubocop.yml
RSpec/MultipleExpectations:
   Max: 20

Wonderful, thx @pirj!


bodymovin.js:8002 Uncaught TypeError: Cannot read property 'u' of undefined

So i have been playing for the last couple days with bodymovin. And I can't seem to get it working.
And before you ask me, I have a After effects project I can't share unfortunately :( ...
Here is my data.json and demo.html. I run this via a local Python SimpleHTTPServer ;)
Gist: https://gist.github.com/TomHoenderdos/86c0fcf5071dd0ae2dc48b908610857a
I have been digging through the code to find where the problem lies, and all I now know is that within the code beneath here is when I comment this.renderer.searchExtraCompositions(animData.assets); then everything works fine!
AnimationItem.prototype.configAnimation = function (animData) {
    if(this.renderer && this.renderer.destroyed){
        return;
    }
    //console.log(JSON.parse(JSON.stringify(animData)));
    //animData.w = Math.round(animData.w/blitter);
    //animData.h = Math.round(animData.h/blitter);
    this.animationData = animData;
    this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);
    this.animationData.tf = this.totalFrames;
    this.renderer.configAnimation(animData);

    if(!animData.assets){
        animData.assets = [];
    }
    if(animData.comps) {
        animData.assets = animData.assets.concat(animData.comps);
        animData.comps = null;
    }
    this.renderer.searchExtraCompositions(animData.assets); // <!-- Comment this line!

    this.layers = this.animationData.layers;
    this.assets = this.animationData.assets;
    this.frameRate = this.animationData.fr;
    this.firstFrame = Math.round(this.animationData.ip);
    this.frameMult = this.animationData.fr / 1000;
    this.trigger('config_ready');
    this.imagePreloader = new ImagePreloader();
    this.imagePreloader.setAssetsPath(this.assetsPath);
    this.imagePreloader.setPath(this.path);
    this.imagePreloader.loadAssets(animData.assets);
    this.loadSegments();
    this.updaFrameModifier();
    if(this.renderer.globalData.fontManager){
        this.waitForFontsLoaded();
    }else{
        dataManager.completeData(this.animationData,this.renderer.globalData.fontManager);
        this.checkLoaded();
    }
};

Hopefully this can help you solve a bug or you can help me solve my 'export' problem ;)

have you selected some of your comps to be exported as Extra Comps?
Those extra comps are only needed if they are not part of your render tree and are usually only needed if you have expressions referencing them.
Nevertheless, I'll look into the issue. It seems to be related to those comps having external images.
thanks!

Yes i have selected some of my comps to be exported. I think i have selected all the comps that needs to be referenced.. Is the extra comps only necessary when i reference it from an expression? Not when the comp is used in the timeline?

So i deselected a lot of comps that were not referenced with a expression and now without changes to your code it all works! Thanks for the tip!
I see some visual glitches with Trim paths, should I submit a bug report for that?

yes, please. If you can share an .ae also it would be great.


The existing link is broken.

The existing link is broken. Found an alternative link for the doc

@KittyChiu : Thanks for your contribution! The author(s) have been notified to review your proposed change.


Bug: Error: Access Denied when using Gamepad Input Injection

Which crate is this about?
windows
Crate version
"0.48"
Summary
The exact error message is:
Error { code: HRESULT(0x80070005), message: "Access is denied." }

Stacktrace follows:
stack backtrace:
   0: std::panicking::begin_panic_handler
             at /rustc/90c541806f23a127002de5b4038be731ba1458ca/library\std\src\panicking.rs:578
   1: core::panicking::panic_fmt
             at /rustc/90c541806f23a127002de5b4038be731ba1458ca/library\core\src\panicking.rs:67
   2: core::result::unwrap_failed
             at /rustc/90c541806f23a127002de5b4038be731ba1458ca/library\core\src\result.rs:1687
   3: enum2$<core::result::Result<tuple$<>,windows::core::error::Error> >::unwrap<tuple$<>,windows::core::error::Error>
             at /rustc/90c541806f23a127002de5b4038be731ba1458ca\library\core\src\result.rs:1089
   4: pc_server_rs::input_injector::GamepadInjector::inject
             at .\src\input_injector.rs:47
   5: pc_server_rs::main
             at .\src\main.rs:21
   6: core::ops::function::FnOnce::call_once<void (*)(),tuple$<> >
             at /rustc/90c541806f23a127002de5b4038be731ba1458ca\library\core\src\ops\function.rs:250

Toolchain version/configuration
Default host: x86_64-pc-windows-msvc
rustup home:  C:\Users\swast.rustup
stable-x86_64-pc-windows-msvc (default)
rustc 1.70.0 (90c541806 2023-05-31)
Reproducible example
//! Input injection using WinRT.
//! See https://github.com/microsoft/windows-rs
//! and https://learn.microsoft.com/en-us/uwp/api/windows.gaming.input.gamepad

use windows::Gaming::Input::GamepadButtons;
use windows::UI::Input::Preview::Injection::InjectedInputGamepadInfo;
use windows::UI::Input::Preview::Injection::InputInjector;

pub(crate) struct GamepadInjector {
    gamepad_state: InjectedInputGamepadInfo,
    injector: InputInjector,
}

impl GamepadInjector {
    pub(crate) fn new() -> Self {
        let injector: InputInjector = InputInjector::TryCreate().unwrap();
        println!("Created input injector.");
        injector.InitializeGamepadInjection().unwrap();
        println!("Initialized gamepad injection.");
        let gamepad_state = InjectedInputGamepadInfo::new().unwrap();
        Self {
            gamepad_state,
            injector,
        }
    }

    pub(crate) fn update(
        &mut self,
        buttons: GamepadButtons,
        left_thumbstick: (f64, f64),
        right_thumbstick: (f64, f64),
    ) {
        let _ = self.gamepad_state.SetButtons(buttons);
        let _ = self.gamepad_state.SetLeftThumbstickX(left_thumbstick.0);
        let _ = self.gamepad_state.SetLeftThumbstickY(left_thumbstick.1);
        let _ = self.gamepad_state.SetRightThumbstickX(right_thumbstick.0);
        let _ = self.gamepad_state.SetRightThumbstickY(right_thumbstick.1);
    }

    pub(crate) fn inject(&mut self) {
        self.injector
            .InjectGamepadInput(&self.gamepad_state)
            .unwrap();
    }
}

impl Drop for GamepadInjector {
    fn drop(&mut self) {
        self.injector.UninitializeGamepadInjection().unwrap();
    }
}

Crate manifest
#...

[dependencies.windows]
version = "0.48"
features = [
	"Gaming_Input",
	"UI_Input_Preview_Injection",
]

Expected behavior
No response
Actual behavior
Calls to InputInjector.InjectGamepadInput() and InputInjector.InitializeGamepadInjection() return the aforementioned error.
Additional comments
No response

This API must be used in a packaged app context with the inputInjectionBrokered restricted capability, per docs:

Important
The APIs in this namespace require the inputInjectionBrokered restricted capability.
[...]

See also:

https://learn.microsoft.com/windows/apps/design/input/input-injection
https://learn.microsoft.com/windows/apps/desktop/modernize/desktop-to-uwp-supported-api
https://learn.microsoft.com/windows/apps/desktop/modernize/modernize-packaged-apps

For API-specific questions, we suggest asking on:

https://docs.microsoft.com/en-us/answers/topics/windows-api.html
https://stackoverflow.com/questions/tagged/windows-rs

Thanks for your quick response.
I noticed the 'inputInjectionBrokered restricted capability' requirement earlier but the examples are all in packaging for C# apps. I didn't understand.
Could you mention in simple terms what it means for a Rust program?
Is it possible to get the feature working in a Rust or a C++ app? If yes, how?

You may not need to package your application. I remember calling these APIs while as admin in an unpackaged app and it working.

Hey @kitswas, sure. Packaging an application in this case means you take your app artifacts (exe, lib, graphics, etc.), document them via a special manifest, then box everything up with MSIX (previously known as APPX). The main workflow above results in a packaged app that is put into a container, where capabilities such as injecting input and touching the registry are strictly regulated. (Think of a sandbox, if you're familiar with that term.)
We have a sample that shows an application that utilizes a manifest here https://github.com/microsoft/windows-rs/tree/master/crates/samples/windows/core_app.
But maybe none of this is needed as @robmikh points out. Does elevating your app (run as admin) solve your problem?

Run as admin was the first thing I tried when I encountered the error.
On the command line,
powershell start target\debug\pc-server-rs.exe -Verb runas

I also did right-click > Run as admin from Windows Explorer.
Didn't work.
Am I missing something?

Ah interesting, it appears running in an unpackaged app without a manifest only works if you have Developer Mode enabled in the settings.

Yes, the app continued to work even after I unregistered the Manifest.
That's when I noticed.
Earlier, I had enabled Developer Mode to register the Manifest.
Still couldn't get the Gamepad input injection to work, though.
The line
injector.InitializeGamepadInjection().unwrap();

doesn't work as expected (seems to do nothing).
From the docs,

Calling this method is analogous to connecting a physical gamepad, which also triggers a GamepadAdded event.

I was also getting the error thread 'main' has overflowed its stack sporadically.
Now, I am rewriting things the Windows (official/recommended) way, i.e., using C# and following the tutorials.
A big thank you to all who tried to help me.


error importing document from reMarkable.

I used the beta version from seway to register one-note as a devise and it worked. It updated and got my-script to work. It will sync all the files. However when I go to fetch a document I get the following error:
error importing document from reMarkable.
Exception from HRESULT: 0x80042004
I am not sure what to do from here. I would like to keep the program installed just in case there are future patches that update it.


new webpack.optimize.CommonsChunkPlugin无法分离vue-router

Do you want to request a feature or report a bug?

What is the current behavior?
If the current behavior is a bug, please provide the steps to reproduce.

What is the expected behavior?
If this is a feature request, what is motivation or use case for changing the behavior?
Please mention other relevant information such as the browser version, Node.js version, webpack version and Operating System.
这是我在webpack里边的配置，前边的echarts vue  vux vuex 都可以实现分离 只有vue-router不可以
new webpack.optimize.CommonsChunkPlugin({
// name对应入口文件，入口文件单独抽离
name: ['echarts', 'vue', 'vux', 'vuex','vue-router'],
// 抽离路径
filename: 'assets/js/[name].js',
// filename:'assets/js/[name].[ext]',
// 最小抽离两个文件
minChunks: 2
}),

Please file issues in English

ok i will


Performance issue

Description
When running a SymuVia simulation with SymuPy the time to perform a next_step increases with the number of step.
Reproduce
Use the configuration file: https://github.com/licit-lab/symupy-examples/blob/main/network/SingleLink_symuvia_withcapacityrestriction.xml
And run the simulation with the code:
from symupy.runtime.api import Simulator
from symupy.utils.constants import DEFAULT_PATH_SYMUVIA

import time

sim_instance = Simulator.from_path("SingleLink_symuvia_withcapacityrestriction.xml", DEFAULT_PATH_SYMUVIA)
sim_instance.trace_flow = True
sim_instance.step_launch_mode = "full"

with sim_instance as s:
    for _ in range(400):
        start = time.time()
        s.run_step()
        print("Total time step:", time.time() - start)

After tracking down the problem, it seems that this line take more and more time during the simulation.
The issue might be related with the size of the buffer that SymuPy get from SymuVia.

Going deeper the problem seems related to the demand augmentation and the update of the structures at each time step. More over whith more time step memory allocation seem also to increase.

By the structure you mean the buffer_string attribute of the Simulator ?
Or the whole update of the vehicles data ?

There's an internal loop that spreads updates to overall subscribers (parsing data from xml trace to a dict and then to the object), it's via a for loop within the publisher. I'm checking on why the performance goes from 1 ms to 5ms, this might be due to the buffer size (In exploration)
When updating the buffer there is a dispatch to objects (called subscribers to update internal object data). E.g vehicle's data, etc. This is done along multiple channels (as in a pub-sub pattern), and up to the moment, there's only one channel to dispatch information.
https://github.com/licit-lab/symupy/blob/e8694d026cddf56710b39ba24083f4bd9380c1cc/symupy/utils/parser.py#L65-L69
Afterwards, each one of the subscribers is updated via this loop, this loop scales bad with number of vehicles since the number of vehicles is the number of objects to run along the for.
https://github.com/licit-lab/symupy/blob/e8694d026cddf56710b39ba24083f4bd9380c1cc/symupy/runtime/logic/publisher.py#L72-L79

Maybe to speed up things a little, we can consider using comprehension list for those loops ?

But there is only one channel here .. My bad, it will not improve this case.

Parsing around 340 vehicles to a dict is not costly but it can go up to 2 ms.
from xmltodict import parse

%timeit parse(s.request.query)
1.86 ms ± 89.7 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

Parsing around 340 vehicles to a dict is not costly but it can go up to 2 ms.
from xmltodict import parse

%timeit parse(s.request.query)
1.86 ms ± 89.7 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

The weird thing is the exponential grow in time of your first plot .. The parsing of the string into a dict should have a linear increase in time. So It's maybe not the problem.

Actually parse, does more complex things than linear parsing because creates embeddings, (dicts of dicts) when the xml structure allows for it. I used the library since it reduced the effort on this transformation in terms of code but we could try a custom solution that follows the linear time increase.
On the other hand, there are still 2~ms/veh processing to search they could be related to memory handling.

On the other hand, there are still 2~ms/veh processing to search they could be related to memory handling.

Copy in memory of the string returning by symuvia ?

Now performance has this behaviour:
For reproduction please check https://github.com/licit-lab/symupy-examples


Display image inside link custom rule

Hi there,
I'm playing with library and I've encountered problem with displaying Image inside custom rule for image. It says that:

Unexpected view type nested under text node...

Am I able to display anything which is not Text inside link. Is there any magic way to fix that? Any ideas?
Btw. What I want to achieve is to display youtube thumbnail when someone added link to youtube inside markdown.

I'm currently working on that fix at the moment. I'm currently out of the
country so I will finish working on this fix in 4 days from now
On Fri, Mar 30, 2018, 11:40 Michał Świtoń<EMAIL_ADDRESS>wrote:

Hi there,
I'm playing with library and I've encountered problem with displaying
Image inside custom rule for image. It says that:
Unexpected view type nested under text node...
Am I able to display anything which is not Text inside link. Is there any
magic way to fix that? Any ideas?
Btw. What I want to achieve is to display youtube thumbnail when someone
added link to youtube inside markdown.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/mientjan/react-native-markdown-renderer/issues/33,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAnJKEcYC50hp9vgbuoF5fG3UIq2CL0Gks5tjf2mgaJpZM4TBgjc
.

fixed issue in branch https://github.com/mientjan/react-native-markdown-renderer/tree/feature/issue-33 will merge soon. could you test it?

tested it my self, released under v3.2.0. again thx for pointing this out


fix: Firefox input widget text selection

Description
Fixes #6723
Cause - This is a very old issue that yet to be resolved by Mozilla
https://bugzilla.mozilla.org/show_bug.cgi?id=800050
https://bugzilla.mozilla.org/show_bug.cgi?id=1189486
Type of change

Bug fix (non-breaking change which fixes an issue)

How Has This Been Tested?
Manual
Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes

Test coverage results :test_tube:
:red_circle: Total coverage has decreased
// Code coverage diff between base branch:release and head branch: fix/6723-firefox-input-selection

Status
File
% Stmts
% Branch
% Funcs
% Lines

:red_circle:
total
54.85 (-0.01)
36.79 (-0.02)
33.55 (-0.02)
55.44 (-0.01)

:red_circle:
app/client/src/utils/helpers.tsx
66.11 (-1.67)
37.89 (-3.16)
45.16 (-3.23)
63.19 (-1.39)

:red_circle:
app/client/src/widgets/InputWidget.tsx
53.92 (-0.54)
22.86 (0)
59.09 (0)
55.67 (-0.58)

Working fine on deploy preview.


bug about Duration or Timer ?

Maybe I found a bug about Duration or Timer.
Timer startTimeout(int microseconds) {
  const ms = const Duration(microseconds: 1);
  var duration = ms*microseconds;
  return new Timer(duration, doSomething);
}

It works well If microseconds is greater than 999.
It's ok from 1000.
It doesn't works well if microseconds less than 1000.
It's not ok from 999 to below.
It responds so fast if microseconds is less than 1000.
Maybe 999 and 1 are same as far as I think.

Are you perchance confusing microseconds with milliseconds? 1000 microseconds is really quick.

It's unclear what you are trying to achieve. In general timers and time measurements have certain granularity - if you go beyond that granularity you will see strange effects, like for example timer firing all the time.

@srawlins

Are you perchance confusing microseconds with milliseconds? 1000 microseconds is really quick.

I'm not confused.
@mraleph

It's unclear what you are trying to achieve. In general timers and time measurements have certain granularity - if you go beyond that granularity you will see strange effects, like for example timer firing all the time.

ok.
I'll explain my plan.
There is a sprite image.
The size is 1280x1280.
It has 100 frames.
All frame images 128x128.
I want to animate these frames.
It needs to loop 100 times so quickly but also smooth animation.
So I tried to loop it quickly.
It took about one second to animate 100 frames.
When I set 1000 microseconds, it is a good.
But I wanted speed up it about 2 times.
So I set 500.
It didn't takes half time but very short time for 100 frames. ( maybe 0.1 second )
When I set 999, it is same with 500.
I think all the same when I set it from 1 to  999 microseconds.
Is there anything wrong?
What can I do?

@mraleph
I also think it may depends on CPU.
I just found that it doesn't reduce time by half about cases. ( 1000 , 500 microseconds )
And I'll skip half frames if this will not modified. ( 50 instead of 100 frames )


Autopopulated forum post doesn't correctly tag the requester

I'm not sure why it didn't work: https://forum.daemo.org/t/find-career-information-about-an-mit-computer-science-phd-graduate/150
It has my handle correct, I think? @shirishgoyal what's going on?

It was missing a space at end of the requester name.
Also converted format to markdown and added category "Tasks" to all projects

is this resolved @shirishgoyal ?

Yes, this was resolved. I am checking on a different issue of setting requester to auto-watch the topic


Change codes to access data (not movielens 100k) for MLFlow

Still waiting for the changed functions from our spotlight. our docker images already use the "new" spotlight version from our repository, but without the changed get_dataset functions, i cannot work on this task.


ONE ERROR

"Hello my friend, I hope you're doing well. I made this project and connected everything according to the schematic you showed using Arduino Nano. I also added the code and connected it to the car, but I can't establish communication with the OBD no matter what I do. There's no communication, and I'm about to lose my mind. Can you give me some ideas?"

"Initialising... The serial monitor keeps saying this."

Which scheme are you using?

Which pins are you using with Arduino nano?

Is there pin 7 on your car's OBD2 connector?

"I am using pins 7 and 8, yes, my car's OBD has a pin 7. I am using the Basic Code, the one with the .ino file."

"I was able to get a response when I connected the OBD2 device using the 'ISO9141' and 'ISO14230_Slow' protocols. There is no issue with the car."

"I'm stuck in this loop with the messages: 'Initialising... Received Data: 55 8 8 Received Data: F7'. What could be causing this?"

"I’m receiving the following responses when using the protocol String protocol = "ISO14230_Fast";:
Live Data: Writing Data Received Data: C2 33 F1 1 D F4 Speed: 0 Writing Data Received Data: C2 33 F1 1 C F3 Engine RPM: 0 Writing Data Received Data: C2 33 F1 1 5 EC Coolant Temp: 0 Writing Data"

Received Data: C2 33 F1 1 5 EC 83 F1 18 7F 1 12 1E
Coolant Temp: 0
Writing Data
Received Data: C2 33 F1 1 F F6 83 F1 18 7F 1 12 1E
Intake Air Temp: 0
Writing Data
Received Data: C2 33 F1 1 11 F8 83 F1 18 7F 1 12 1E
Throttle: 0
Writing Data
Received Data: C2 33 F1 1 E F5 83 F1 18 7F 1 12 1E
Timing Advance: 0

Received Data: C2 33 F1 1 5 EC 83 F1 18 7F 1 12 1E Coolant Temp: 0 Writing Data Received Data: C2 33 F1 1 F F6 83 F1 18 7F 1 12 1E Intake Air Temp: 0 Writing Data Received Data: C2 33 F1 1 11 F8 83 F1 18 7F 1 12 1E Throttle: 0 Writing Data Received Data: C2 33 F1 1 E F5 83 F1 18 7F 1 12 1E Timing Advance: 0

If you get data like "C2 33 F1 1 5 EC 83 F1 18 7F 1 12 1E", it means your Arduino is connected to car ECU. This request code "C2 33 F1 1 5 EC" is written by Arduino and this "83 F1 18 7F 1 12 1E" is the response of the car, but this response means an error. I think your cars protocol is ISO9141 because you are getting error like this. Can you message me the console output in ISO9141 protocol.

"Of course, buddy. The result with the 9141 protocol is as follows:
Received Data: F7
Initialising...
Received Data: 55 8 8
Received Data: F7
Initialising...
Received Data: 55 8 8
Received Data: F7
Initialising...
Received Data: 55 8 8
Received Data: F7
Initialising...
Received Data: 55 8 8
Received Data: F7
Initialising..."

Ops my bad your protocol is ISO14230_Slow but i dont know why your car response like this. What you receive here
Serial.println("Suported LiveData: ");
  for (int i = 0; i < 32; i++) {
    Serial.print(supportedLiveData[i]);
    Serial.print(", ");
  }
  Serial.println();

after you Arduino is connected to your car?

"Yes, the Arduino is currently connected to my car. Could there be an issue in the code?"

Wait, I will modify the code and you will try with the modified code.

"My friend, I’m waiting excitedly for your response. I’m so grateful for your help, I’ve been working on this for four days now."

I think I had a bug in the Basic code. Try this code and send me serial output.
Basic_Code.zip

Keep the protocol in automatic mode, don't change it and send me serial output.

I'm encountering the following error in my new code:  C:\Users\elato\AppData\Local\Temp\5631c5f7-2852-428a-a332-5a3985e80d62_Basic_Code.zip.d62\Basic_Code\Basic_Code.ino: In function 'void loop()':
C:\Users\elato\AppData\Local\Temp\5631c5f7-2852-428a-a332-5a3985e80d62_Basic_Code.zip.d62\Basic_Code\Basic_Code.ino:38:25: error: 'init_OBD2' was not declared in this scope
bool init_success = init_OBD2();
^~~~~~~~~
C:\Users\elato\AppData\Local\Temp\5631c5f7-2852-428a-a332-5a3985e80d62_Basic_Code.zip.d62\Basic_Code\Basic_Code.ino:38:25: note: suggested alternative: 'init_OBD'
bool init_success = init_OBD2();
^~~~~~~~~
init_OBD
C:\Users\elato\AppData\Local\Temp\5631c5f7-2852-428a-a332-5a3985e80d62_Basic_Code.zip.d62\Basic_Code\Basic_Code.ino:46:5: error: 'read_K' was not declared in this scope
read_K();
^~~~~~
C:\Users\elato\AppData\Local\Temp\5631c5f7-2852-428a-a332-5a3985e80d62_Basic_Code.zip.d62\Basic_Code\Basic_Code.ino:46:5: note: suggested alternative: 'read_ID'
read_K();
^~~~~~
read_ID
exit status 1
Compilation error: 'init_OBD2' was not declared in this scope
It seems like a library error, and I'm currently working on fixing it.

Unzip all the files into one folder and it will work.

Initialising... Received Data: 55 8 8  Your Protocol is ISO9141 Received Data: F7  Initialising... Received Data: 55 8 8  Your Protocol is ISO9141 Received Data: F7  Initialising... Received Data: 55 8 8  Your Protocol is ISO9141 Received Data: F7  Initialising... Received Data: 55 8 8  Your Protocol is ISO9141 Received Data: F7  Initialising...

Initialising...
Received Data: 55 8 8
Your Protocol is ISO9141
Received Data: F7
Initialising...
Received Data: 55 8 8
Your Protocol is ISO9141
Received Data: F7
Initialising...
Received Data: 55 8 8
Your Protocol is ISO9141
Received Data: F7
Initialising...
Received Data: 55 8 8
Your Protocol is ISO9141
Received Data: F7
Initialising...

"I can only see these kinds of values in Fast mode: Speed: 0
Writing Data
Received Data: C2 33 F1 1 C F3 83 F1 18 7F 1 12 1E
Engine RPM: 0
Writing Data
Received Data: C2 33 F1 1 5 EC 83 F1 18 7F 1 12 1E
Coolant Temp: 0
Live Data:
Writing Data
Received Data: C2 33 F1 1 D F4 83 F1 18 7F 1 12 1E
Speed: 0
Writing Data
Received Data: C2 33 F1 1 C F3 83 F1 18 7F 1 12 1E
Engine RPM: 0
Writing Data
Received Data: C2 33 F1 1 5 EC 83 F1 18 7F 1 12 1E
Coolant Temp: 0
Live Data:"
Let me know if you need further help! (FAST PROTOCOL)

I don't know why this happens to you. I have tested all the protocols and they worked for me. I guess it's due to the timing because all ECUs send the response at different times. I'll tell you a few things to change and try.

Increase the time in line 66 "REQUEST_DELAY = 50;" from 50 to 100 and test.
In line 70 "if (resultBuffer[1])" change resultBuffer[1] to resultBuffer[0]

Try these steps separately. Keep the protocol in automatic mode.

I dont know how you can receive data like this C2 33 F1 1 C F3 83 F1 18 7F 1 12 1E . This means you are initialised in ISO14230_Fast but your protocol is ISO9141. This is very strange.

"Buddy, I translated it and here’s what happened:
Live Data:
Writing Data
Received Data: 68 6A F1 1 D D1
Speed: 0
Writing Data
Initialising...
Received Data: 55 8 8
Your Protocol is ISO9141
Received Data: F7
Init Success !!
Live Data:
Writing Data
Received Data: 68 6A F1 1 D D1
Speed: 0
Writing Data
Received Data: 68 6A F1 1 C D0
Engine RPM: 0"

After the last adjustment, the results turned out like this.

Although a value has been read from the OBD, it's indicating 161 degrees Celsius (based on the conversion from hex C9), which seems to be incorrect. This suggests there's an issue either with how the data is being interpreted or a sensor error. Received Data: 68 6A F1 1 5 C9
Coolant Temp: 0

That means it worked!

No, this 68 6A F1 1 5 C9 is the request code, not the response from the ECU.

Ops my bad not in lines 66 and 70 in lines 99 and 103. if use changed in this line and the response is this, change the time to 40 in line 99. and in line 103 the code should look like this "if (resultBuffer[1]) {"

Unfortunately, the result is the same. Are there any other alternatives?

Which pins do you have in your car's OBD2 port
for example in the OBD2 port of my car I have pins 2,4,5,7,8,16

"Yes, my friend, I still need your help. I'm busy with farming, and my workload is intense, so I haven't been able to look into it. Sorry about that

My friend, these pins are occupied: obd2 16, 12, 8, 7, 3, 4.

Friend, Pin 4 is the chassis ground, and I hadn't connected it before. Now, I'll connect it and try again. Hopefully, this is where the issue lies

Pin 4 and 5 are ground and I think it doesn't matter which one you use.  Which communication scheme did you use?

I've now connected pins 4 and 5, and I'm heading to the car to test it

I don't know why you can't connect to the ECU. Your ECU sends the correct data at the beginning of the initialization 55 8 8 is sent by your ECU and this says that your communication protocol is İSO9141, then you should send F7 and your ECU should respond with another byte and the communication will be OK, but  your ECU is not responding. I think this could happen from the timing in the code or something else. I have tested with a car that had this protocol and it worked perfectly.

You can try changing the time values in line 97 and 99. Increase, decrease and test. I think that might be the problem. And I have a question. Does your car have an LPG system ?

Sorry, my friend, I don't have an LPG system; my car is a diesel Kia Sorento 2006.

I'm heading back to the car to try again. I believe we can solve this tonight

I ask because some cars with an LPG system are difficult to connect, because for the LPG system there must be emulators and these emulators are connected to the same protocol and the emulator is constantly sending codes and the codes are mixed with the ECU codes.

Can you tell me the engine and horsepower of your car?

140 hp, 2.5-liter engine

Look, I found this on the internet.

Your protocol is ISO9141, I say, but I don't know why it doesn't connect.

When I connected the Wi-Fi OBD device, I also saw a transmission control unit. I think I’ll connect the Wi-Fi device again and reach out to you."

My friend, there are two control units in the car. One is the ECU for the transmission, and it shows code 0x018 with one data visible. Then there is the ECU for the engine (OBD) with 14 live data points and a code 0x012. There's also the engine manufacturer ECU, which shows 60 errors but no data, and its code is also 0x012

I understand this well, but before these ECUs there is a layer to connect to the ECU.  First you need to contact to request data from the specific ECU.

Bunu iyi anlıyorum, ancak bu ECU'lardan önce ECU'ya bağlanmak için bir katman var. Öncelikle belirli ECU'dan veri istemek için iletişime geçmeniz gerekiyor.
Do you have any idea how we can do this?

This is exactly what my code is trying to do.  It works fine for me.  Did you change the timings in the code and test?

I tested it by changing lines 97 and 99 one by one.

On my WiFi OBD device, it shows "ISO14230-4 (5baud) start" when selecting the protocol automatically. Is this an important detail?

On my WiFi OBD device, it shows "ISO14230-4 (5baud) start" when selecting the protocol automatically. Is this an important detail?

No

İn line 97 write delay(5); and test. Dont change other in line 99.

And test with delay(50)

Buddy, my car is out of town, I'll test it as soon as possible.

"Friend, I have another car with K-line, a Lada Samara, and I got these errors as well:  Initialising...
Received Data: FF 0 0
Writing Data
Received Data: 1 3 F1 81 66
Initialising...
Received Data: 3F 0 0
Writing Data

So, it means there’s no problem with the car. Are you running this code with an ESP32, or could there be a problem with my Arduino Nano?"

Can I learn more details about your circuit? Were you able to get the transistor-based circuit to work?"

After extensive research, I found that some people have modified your transistor-based circuit in this way. What do you think about this?

"I placed an order for the L9637D along with its schematic, buddy. I hope this solves the issue this time. :("

Can I learn more details about your circuit? Were you able to get the transistor-based circuit to work?"

Yes, the schemes work, I have tried both the schemes that I have given.  I have tried with Arduino Uno, Arduino Nano, ESP32 Wroom, ESP32 C3 and ESP32 S3 and everything works perfectly.

Your problem should not be from the schemes I have shared. It could be because of the breadboard. Many people have had a problem with the schemes they made on the breadboard, me too.  Either it's from that or it's from the timings in the code.

I will then solder the breadboard onto a plexiglass, minimizing the risk to zero

My friend, I soldered the circuit on plexiglass and minimized the risk of errors to zero. Now I'm encountering the same issue with both my Kia and Lada vehicles, which means there is still an error in the code somewhere, or perhaps I'm still making a mistake. What is the make and model of the vehicle you tested on?

"I tried setting line 97 to 5, then I tried 200, but I haven't tried 50 yet. Now, could you tell me all the possible values I can change in the code? I'll test them one by one while I'm at the vehicle.

Generally times in 97 rows should be between 25 and 50. Try 50 and write to me again.

I increased line 97 from 50 up to 200 while testing on the vehicle, but nothing changed except for the error codes. They changed from FF 0 0 to 3F 0 0, then to 1F 0 0, and 7F 0 0, and so on. I also tried changing line 99 from 50 up to 200, but the result was the same :(."

I increased it step by step from 50 to 200, testing in increments of five.

My friend, what vehicle did you test this system on?

My friend, could there be an error in this part related to the PIDs?

const byte start_Bytes[3] = { 0xC1, 0x33, 0xF1 };
const byte start_Bytes_SLOW[3] = { 0x68, 0x6A, 0xF1 };
const byte live_data[4] = { 0xC2, 0x33, 0xF1, 0x01 };           //Live Data Start Bytes
const byte live_data_SLOW[4] = { 0x68, 0x6A, 0xF1, 0x01 };      //Live Data Start Bytes
const byte freeze_frame[4] = { 0xC3, 0x33, 0xF1, 0x02 };        //Freeze Frame Start Bytes
const byte freeze_frame_SLOW[4] = { 0x68, 0x6A, 0xF1, 0x02 };   //Freeze Frame Start Bytes
const byte vehicle_info[4] = { 0xC2, 0x33, 0xF1, 0x09 };        //Live Data Start Bytes
const byte vehicle_info_SLOW[4] = { 0x68, 0x6A, 0xF1, 0x09 };   //Live Data Start Bytes

Can you check out this link: https://www.instructables.com/Low-Cost-OBD2-Communications-on-K-line-ISO-9141-2/?"

Generally times in 97 rows should be between 25 and 50. Try 50 and write to me again.Friend, I tested this in several cars, one is a BMW E46, I just tested it again and everything works perfectly for me.  The problem cannot be from the PID because it does not reach this step yet, the step is for connection, not for taking data, it is not connected in your case.  Your car, at the beginning returns data to understand the protocol, then you have to send the F7 byte to the car and it must return one byte to you and that means that it has been connected, see the picture I uploaded below with me after I send the F7 byte it returns me byte CC and this  means the connection is ready.  After that, you start asking for data from the car with the PID. And looked the link which you send to me steps are absolutely same.

The problem is also possible because of AltSerial, because it is not the original way of communication.  In principle, the UART pins (RX and TX pins) of the microcontroller should be used, but with Arduino Nano I did not use these pins because I was printing the values in the console and there is no second UART, both things cannot be done in one UART, that's why I used altserial.  If you have a microcontroller with 2 UART pins like esp32 or esp8266 you can try with them using UART0 for Serial Output and UART1 for communication.

This won't change anything but try changing the first 8 lines like the one i show you.
#include "PIDs.h"
#include <AltSoftSerial.h>
AltSoftSerial K_Serial;

#define K_line_RX 8
#define K_line_TX 9
#define Led 13

"I think the problem is here, my friend. Right now, I have the L9637 chip, and I'm working on soldering it. How did you solder it? It's really small. Also, I couldn't fully determine the orientation of the chip. Which side is pin 1? Did your chip have a marking as well?

"I will buy an ESP8266 and try it because there was a communication issue, and this reason seems quite logical.

İ used PCB like this.

I also couldn't figure out which foot is number 1, but I think I used the foot that is down to the left of the letters when the letters are in the right way, as 1 leg.

Buddy, ESP8266 doesn't support AltSerial. I tried using it this way, but it didn't work. It gets stuck at the "initializing" part. I think I need to get an ESP32.

#include "PIDs.h"
#include <SoftwareSerial.h>  // ESPSoftwareSerial kullanacağız
SoftwareSerial K_Serial(4, 5);  // RX = GPIO4, TX = GPIO5 (ESP8266 GPIO pinleri)
#define K_line_RX 2     // RX pinini GPIO4 olarak tanımlıyoruz
#define K_line_TX 5     // TX pinini GPIO5 olarak tanımlıyoruz
#define Led 13          // LED pini (ESP8266'da dahili LED GPIO2 olabilir)
#define READ_DELAY 5
int REQUEST_DELAY;
//String protocol = "Automatic";
// String protocol = "ISO9141";
String protocol = "ISO14230_Slow";
// String protocol = "ISO14230_Fast";
int SPEED = 0, RPM = 0, THROTTLE = 0, COOLANT_TEMP = 0, INTAKE_TEMP = 0, TIMINGADVANCE = 0, ENGINELOAD = 0, MAF = 0, DISTANCE_TRAVELED_WITH_MIL = 0;
int freeze_SPEED = 0, freeze_RPM = 0, freeze_COOLANT_TEMP = 0, freeze_ENGINELOAD = 0;
double VOLTAGE = 0;
String Vehicle_VIN = "", Vehicle_ID = "", Vehicle_ID_Num = "";
W
bool KLineStatus = false;
static unsigned long lastDTCTime = 1000;
void setup() {
Serial.begin(9600);         // ESP8266 ile haberleşme için ana seri port
K_Serial.begin(10400);      // K-line haberleşmesi için SoftwareSerial başlatma
pinMode(K_line_RX, INPUT_PULLUP);
pinMode(K_line_TX, OUTPUT);
pinMode(Led, OUTPUT);
}
void loop() {
if (KLineStatus == false) {
Serial.println("Initialising...");
bool init_success = init_OBD2();
if (init_success) {
  KLineStatus = true;
  digitalWrite(Led, HIGH);
  Serial.println("Init Success !!");
}

} else {
read_K();
}
}
// Diğer fonksiyonlarınızı (init_OBD2, read_K vb.) buraya ekleyebilirsiniz...

I'm about to place an order, but I'm waiting for your opinion. Have you managed to get it working with ESP8266, buddy?

I used Altserial because Arduino Uno and Nano don't have a second UART.  ESP8266 and ESP32 have a second UART and for that you will not use Altserial, you will directly use the second UART pins (serial port).

İf you are using ESP8266 or ESP32, you need to delete AltSerial lines and change the K_Serial to Serial1 like this
#define K_Serial Serial1

Basically we don't need a second UART, you can directly use UART0 and it will work, but this code is to print the values to the serial monitor and that's the problem. You can use UART0 for communication and you can connect a screen or something else to see the values. I checked for ESP8266 and I see that ESP8266 has a second UART but it only has a TX pin and so it won't work with it if you want to print the values to the serial monitor, sorry. It will work if you use UART0 to communicate and use a screen or website to see the values. I will make the esp32 code work for the esp8266 and upload it soon.

I will not print to the serial monitor, okay, up to this point everything is fine. In the system I want to create, when the temperature reaches 90 degrees, the buzzer will start to sound. Is it possible to do this without printing to the serial monitor?

If I buy an ESP32, will I be able to see the values on the serial monitor?

I will not print to the serial monitor, okay, up to this point everything is fine. In the system I want to create, when the temperature reaches 90 degrees, the buzzer will start to sound. Is it possible to do this without printing to the serial monitor?

Of course you can. Then use direct UART0

If I buy an ESP32, will I be able to see the values on the serial monitor?

Yes

Buddy, I have one more question. What did you connect the voltage pin to? Is it for measuring voltage?

Yes, I made a voltage divider with 2 resistors and measured the battery voltage from pin 16 of the OBD2 port.

C:\Users\elato\Desktop\ESP8266\ESP8266.ino: In function 'void loop()':
C:\Users\elato\Desktop\ESP8266\ESP8266.ino:63:7: error: 'connectMelody' was not declared in this scope
63 |       connectMelody();
|       ^~~~~~~~~~~~~
C:\Users\elato\Desktop\ESP8266\K_Line.ino: In function 'void writeData(const byte*, int, byte)':
C:\Users\elato\Desktop\ESP8266\K_Line.ino:99:19: error: 'calculateChecksum' was not declared in this scope
99 |   byte checksum = calculateChecksum(extendedData, length + 1);
|                   ^~~~~~~~~~~~~~~~~
C:\Users\elato\Desktop\ESP8266\K_Line.ino: In function 'void writeDataFreezeFrame(const byte*, int, byte)':
C:\Users\elato\Desktop\ESP8266\K_Line.ino:113:19: error: 'calculateChecksum' was not declared in this scope
113 |   byte checksum = calculateChecksum(extendedData, length + 2);
|                   ^~~~~~~~~~~~~~~~~
C:\Users\elato\Desktop\ESP8266\K_Line.ino: In function 'void getVIN()':
C:\Users\elato\Desktop\ESP8266\K_Line.ino:270:17: error: 'convertHexToAscii' was not declared in this scope
270 |   Vehicle_VIN = convertHexToAscii(VIN_Array, sizeof(VIN_Array));
|                 ^~~~~~~~~~~~~~~~~
C:\Users\elato\Desktop\ESP8266\K_Line.ino: In function 'void getCalibrationID()':
C:\Users\elato\Desktop\ESP8266\K_Line.ino:308:16: error: 'convertHexToAscii' was not declared in this scope
308 |   Vehicle_ID = convertHexToAscii(ID_Array, arrayNum);
|                ^~~~~~~~~~~~~~~~~
C:\Users\elato\Desktop\ESP8266\K_Line.ino: In function 'void getCalibrationIDNum()':
C:\Users\elato\Desktop\ESP8266\K_Line.ino:343:20: error: 'convertBytesToHexString' was not declared in this scope
343 |   Vehicle_ID_Num = convertBytesToHexString(IDNum_Array, arrayNum);
|                    ^~~~~~~~~~~~~~~~~~~~~~~
C:\Users\elato\Desktop\ESP8266\K_Line.ino: In function 'void getSupportedPIDs(byte)':
C:\Users\elato\Desktop\ESP8266\K_Line.ino:374:9: error: 'isInArray' was not declared in this scope
374 |     if (isInArray(supportedLiveData, sizeof(supportedLiveData), "20")) {
|         ^~~~~~~~~
C:\Users\elato\Desktop\ESP8266\SPIFFS.ino: In function 'void initSpiffs()':
C:\Users\elato\Desktop\ESP8266\SPIFFS.ino:4:7: error: 'BlinkLed' was not declared in this scope
4 |       BlinkLed(1000, 100);
|       ^~~~~~~~
C:\Users\elato\Desktop\ESP8266\WEB_SERVER.ino: In function 'void initWiFi()':
C:\Users\elato\Desktop\ESP8266\WEB_SERVER.ino:28:5: error: 'BlinkLed' was not declared in this scope
28 |     BlinkLed(100, 5);
|     ^~~~~~~~
C:\Users\elato\Desktop\ESP8266\WEB_SERVER.ino:33:5: error: 'BlinkLed' was not declared in this scope
33 |     BlinkLed(300, 1);
|     ^~~~~~~~
C:\Users\elato\Desktop\ESP8266\WEB_SERVER.ino: In lambda function:
C:\Users\elato\Desktop\ESP8266\WEB_SERVER.ino:116:5: error: 'Melody2' was not declared in this scope
116 |     Melody2();
|     ^~~~~~~
C:\Users\elato\Desktop\ESP8266\WEB_SERVER.ino: In lambda function:
C:\Users\elato\Desktop\ESP8266\WEB_SERVER.ino:129:5: error: 'Melody2' was not declared in this scope
129 |     Melody2();
|     ^~~~~~~
C:\Users\elato\Desktop\ESP8266\WEB_SERVER.ino: In function 'void onEvent(AsyncWebSocket*, AsyncWebSocketClient*, AwsEventType, void*, uint8_t*, size_t)':
C:\Users\elato\Desktop\ESP8266\WEB_SERVER.ino:247:9: error: 'Melody2' was not declared in this scope
247 |         Melody2();
|         ^~~~~~~
C:\Users\elato\Desktop\ESP8266\WEB_SERVER.ino:251:9: error: 'Melody2' was not declared in this scope
251 |         Melody2();
|         ^~~~~~~
exit status 1
Compilation error: 'connectMelody' was not declared in this scope

Unzip all files in one folder.

Bro, there's a white screen on the <IP_ADDRESS> page

It can be possible because your FS Uploader is for LittleFS. Download this and test: https://github.com/esp8266/arduino-esp8266fs-plugin/releases

Do you know exactly how to upload files to SPIFFS? There should be a folder next to the file you opened with Arduino ide and its name should be "data" and all webserver files should be in it. If you don't know exactly how to do it, you can read how to do it in this link: https://randomnerdtutorials.com/install-esp8266-filesystem-uploader-arduino-ide/

Bro, I managed to log into the address. The device appears to be connected, but it can’t connect to the car. I used the D1 and D3 pins and didn’t make any changes to the code. I used the ESP8266 code. Also, when I click on settings or any other option, the Wi-Fi keeps disconnecting

I have this

GPIO 3 and GPIO 1 are not the D3 and D1 pins, GPIO3 is the RX pin and GPIO1 is the TX pin of the nodemcu board.

Use this library instead of the original ESPAsyncwebserwer.
If it still reboots remove these lines in the code

 getVIN();
 getCalibrationID();
 getCalibrationIDNum();
 getSupportedPIDs(0x01);
 getSupportedPIDs(0x02);
 getSupportedPIDs(0x09);

Buddy, the disconnection issue is resolved, but I still can't communicate with the vehicle. :(

ESP8266 veya ESP32 kullanıyorsanız, AltSerial satırlarını silmeniz ve K_Serial satırını Serial1 olarak değiştirmeniz gerekiyor.
#define K_Serial Serial1

Buddy, right now I’m not using Serial1 as the serial, I guess this won't cause any issues.

"In my current code line, it is written as #define K_Serial Serial."

You need to use Serial with GPIO3 and GPIO1, not Serial1. I don't know why you can't connect. Change the protocol on the settings page to ISO9141, save and test again.

I saved it, but unfortunately it says undefined and I couldn’t establish a connection. It’s a big disappointment.

I've read a lot of documentation and my code does exactly the same things it says in the documentations and it works for me.

Buddy, I’m testing it on two different vehicles, and both are unsuccessful. I’ve put a lot of effort into this project, so giving up now is not an option. I’ll build and test the circuit with the L9637 as well. Buddy, you’ve successfully run the ESP8266 before, right? Honestly, I still think there might be an issue with the ESP.

Buddy, which country are you from? Where are you from? The fact that you respond without getting tired and show so much interest really caught my attention.

And what are you studying in school to have so much knowledge? I admire your personality.

I have a question for you. Normally, for serial communication, the rx and tx pins are connected in reverse, but in the schematics I made, the rx pin should be connected to the rx pin of the microcontroller, and the tx pin should be connected to the tx pin of the microcontroller. How did you connect it?

Buddy, I connected it just like in the schematic. I studied a 2-year electrical program, but I made a mistake. Now, I’m preparing to study electronics engineering. :)"

Buddy, I ordered an ESP32. This project has become very costly for me. :) I try to work on it every evening, and I end up having to buy something new each time. I didn’t expect this project to be so challenging. :)

Buddy, the libraries I have might be different and incompatible. Could you send me your libraries required for this project?

There is no difference in microcontroller, it should be with ESP8266 as well. Are you sure you connected RX TX pins correctly? Because most people make mistakes here.

Yes, buddy, I’m sure it’s correct just like in the schematic.

Have you tried it with L9637?

"I'll try it tomorrow; right now the converter isn’t ready.

Buddy, do you think I might have installed a different library? A different version or a library from a different publisher?

I measured the BC547 transistors while the system was operating. The first and last pins of the BC547s are closed during operation, but one of them is constantly open. Is this norma

Buddy, do you think I might have installed a different library? A different version or a library from a different publisher?

To communicate with the car it doesn't use a library everything is in K_Line.ino so it should work.

I measured the BC547 transistors while the system was operating. The first and last pins of the BC547s are closed during operation, but one of them is constantly open. Is this norma

You can try changing the resistor R3 to 510 ohms.  in principle it should be 510 ohms but I had used 10K to be secure.  I don't know if you want you can try it but I don't think it will change anything because I tested a 10K resistor.

The BC547 transistors are working fine, I didn't replace them. Tomorrow, I will try again with the L9637. If it still doesn't work, I'll test it with the ESP32 when it arrives. Eventually, it will have to work with one of them.

I have considered all possibilities, but it’s still not working. I have no idea where the mistake could be. Right now, I don’t have a serial monitor; if I had one, maybe it could give me some guidance.

There seems to be something strange with the current system, as if it's not communicating at all. When I tested it with my Lada Samara using an Arduino Nano, the engine RPM would fluctuate when selecting the protocol, indicating some communication. There was also a relay sound, which I hear even when I connect a normal ELM327. But when I connected this system, the car showed no response at all. Once the ESP32 arrives, I should definitely be able to get the data from the serial monitor, right?

Should I provide VCC to the L9637 from the ESP or 12V?

From ESP

Is there a 3V output on the ESP that can trigger?

I didn't quite understand what you meant.

Bro, the ESP8266 is providing a 3V output. Is this 3V enough for the L9637?

Yes

The result is still negative; there is no response from the vehicle again. I can't proceed without the serial monitor, so it seems I will have to wait for the ESP32. My only concern is that the L9637's datasheet states an operating voltage of 5V, but you operated it at 3V.

I made a protocol change, but the result is still the same. While changing the protocol, the Wi-Fi connection keeps disconnecting and reconnecting. Is this normal?

The result is still negative; there is no response from the vehicle again. I can't proceed without the serial monitor, so it seems I will have to wait for the ESP32. My only concern is that the L9637's datasheet states an operating voltage of 5V, but you operated it at 3V.

Where did you read that it says 5 volts see the picture.

I made a protocol change, but the result is still the same. While changing the protocol, the Wi-Fi connection keeps disconnecting and reconnecting. Is this normal?

Yes it is normal.

It was written on the website where I bought the chip; I didn't check the datasheet. My friend, what’s the plan now? What can we do? Should I wait for the ESP32?

In my opinion, with ESP32 the result will be the same as with Arduino Nano. It does not depend on the microcontroller and with the simplest microcontroller that has a UART it should work.

Are you changing anything in the code at all?

no

Can you try this code with Arduino Nano. This code is for ISO9141 only and my first code that I tested in an ISO9141 car and it worked.
OBD2_ISO9141.zip

This code doesn't have many features and is very short.

It got stuck at initializing.

If it’s working on your Uno like this, the only explanation is that there is an issue with my circuit.

There was another friend having the same issue, and he recently started a new thread. I’m eagerly waiting for his results.

Can you show me the schematics you made in detail.

Received Data: C1 33 F1 81 66
Initialising...
Writing Data
Received Data: C1 33 F1 81 66
Initialising...
Writing Data
Received Data: C1 33 F1 81 66
Initialising... The serial monitor I got using basic code on Arduino Uno.

I made it on a breadboard for better understanding. I also have the same version on a soldered PCB, and I'm using that one.

![son](https://github.com/user-attachments/assets/beb49e56-c526-4c1a-aa8d-42d7b5941684)

The schematic looks good.  Just change the protocol to İSO9141 because in this picture it only uses İSO14230 Fast and the car doesn't respond anything and with İSO9141 the car responds well and your car's protocol is İSO9141

Initialising ISO9141...
First 3 Bytes: 55 8 8
Other Bytes: F7
Init Success !!

Bro, I got this response in the short and simple code you gave me."


ActionBar title value cannot be overwritten by custom title when using ngIf

Here is the code I use for my calendar page. Default title text is overwritten by custom title elements.
<ActionBar title="Calendar">

</ActionBar>

Current month is shown as the title. If user selects some events, page goes into selection mode and title shows the selected item count.
The problem is Calendar text is hidden by default but after I choose some events it becomes visible and even if I cancel selection that text is still visible with custom title element.
Title changes like that after performing these operations:
When app loaded: October 2017
Select event: Calendar 1
Deselect event: Calendar October 2017
tns-android: 3.2.0
tns-core-modules: 3.2.0
tns --version: 3.2.1

Might be related with https://github.com/NativeScript/nativescript-angular/issues/1020

Hi @erkanarslan,
Thank you for contacting us.
I tested this case and indeed this is the same case, which is reported in #1020.
I am closing this issue in favor of the other one.


Prototype of idea: Don't keep MemoryStream buffer on PipelineResponse

Initial prototype of suggestion from this PR comment: https://github.com/Azure/azure-sdk-for-net/pull/41016#discussion_r1442418397

API change check
APIView has identified API level changes in this PR and created following API reviews.
Azure.Core

This idea did not work


Convert to monorepo and allow pkg to participate in monorepo package resolution

Top-level files remain the same.
One of the features of pnpm is that the . directory can be its own workspace.
This is extracted from https://github.com/embroider-build/content-tag/pull/41
which was done so that the tests/browser package could use vite and allow vite to correctly resolve the content-tag package which is located at pkg/ (which now has its assets committed).
This also enables us to commit a index.d.ts after generating our own package.json: https://github.com/embroider-build/content-tag/pull/41/files#diff-c174d28eed9f8ab4086afbf40d445f0e42bd47a0baf8057e6f91dc449b50b219
which I can PR separately after this PR.

These changes are not needed because we went with a non-monorepo approach